【发布时间】:2019-04-14 05:19:00
【问题描述】:
我正在尝试在 android 4.4(api 级别 19)中打开多个相对于 json 配置文件的文件, 我用过
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType({mime});
this.startActivityForResult(intent, {code});
让用户找到配置文件,并从那里打开多个我知道配置文件路径的文件。
但我明白了
Caused by: java.lang.SecurityException:
Permission Denial: reading com.android.providers.downloads.DownloadStorageProvider
uri content://com.android.providers.downloads.documents/document/raw:/storage/emulated/0/Download/{relative file}
requires that you obtain access using ACTION_OPEN_DOCUMENT or related APIs
我不想使用用户界面打开其他文件,所以我尝试添加以下权限但没有得到任何结果
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.MANAGE_DOCUMENTS "/>
我宁愿将文件分开,而不是放在 blob 或 zip 文件中
【问题讨论】:
-
你给READ_EXTERNAL_STORAGE和MANAGE_DOCUMENTS设置运行时权限了吗?
-
我刚刚尝试过,我可以获得 READ_EXTERNAL_STORAGE,但不能获得 MANAGE_DOCUMENTS,但仍然会获得 Permission denial。我使用 minSdkVersion 19,所以尝试使用 ActivityCompat.requestPermissions
-
“我正在尝试打开多个文件”——您的代码实际上与打开文件无关。如果您需要将用户限制为您的应用能够直接访问的文件系统上的文件,请使用a file chooser library,而不是像
ACTION_OPEN_DOCUMENT这样的系统Intent。
标签: android relative-path permission-denied android-contentresolver storage-access-framework