Android 11(30 API)File.listFiles() 不返回所有文件

问题描述 投票:0回答:2
android android-file filefilter
2个回答
0
投票

VLC 媒体播放器现在使用

android.permission.MANAGE_EXTERNAL_STORAGE
(所有文件访问)权限 https://github.com/videolan/vlc-android/blob/89c2deb5fd4983dd64e0e55bc5ab8e559612c9d9/application/vlc-android/AndroidManifest.xml#L12

因此,这是访问所有类型/格式的字幕和视频的唯一方法,但如果 Google 允许并批准您的应用程序的此类权限,那么这是唯一的问题。

通常此权限可以在文件浏览器、防病毒扫描等应用程序中使用,没有任何问题,但官方文档没有提及媒体播放器。

有新的媒体权限(针对视频、音频、图像),但它们没有用,视频媒体权限看不到所有可用的视频格式,只能看到一般的视频格式,并且没有字幕权限,因此应用程序可以访问 srt、ass、 vtt等格式的字幕。

因此,具有所有文件访问权限的 VLC 应用程序更新已获得 Google 批准,但正如我之前在评论中所说,我的视频播放器应用程序被拒绝。 VLC 和我的应用程序都使用 libVLC 来播放不同格式的视频和字幕,但权限不能被同一类别的每个应用程序使用...

https://developer.android.com/training/data-storage/manage-all-files


0
投票

这个解决方案对我有用。

在清单中添加权限:

    <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"/>

在 Activity 的 onStart() 方法中,放置动态请求权限:

    @Override
protected void onStart() {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R && !Environment.isExternalStorageManager()) {
        Uri uri = Uri.parse("package:" + BuildConfig.APPLICATION_ID);
        Intent intent = new Intent(android.provider.Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION, uri);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        this.getApplicationContext().startActivity(intent);
    }
    super.onStart();
}
© www.soinside.com 2019 - 2024. All rights reserved.