首页 > 解决方案 > 尝试加载文件路径时Android中的权限ACCESS_ALL_DOWNLOADS

问题描述

当我从 API 28 上的下载文件夹中选择一个文件时,我一直试图找到这个异常的答案,但没有成功,该文件最终被缓存为后备并检索了路径。

TL;DR:我需要什么来修复这个异常?

java.lang.SecurityException: Permission Denial: reading 
com.android.providers.downloads.DownloadProvider uri 
content://downloads/all_downloads/40 from pid=13467, uid=10091 requires 
android.permission.ACCESS_ALL_DOWNLOADS, or grantUriPermission()

到目前为止我已经尝试过的事情:

将此添加到清单文件中:

   <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_ALL_DOWNLOADS"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name = "android.permission.ACCESS_DOWNLOAD_MANAGER"/>

并在运行时请求Manifest.permission.WRITE_EXTERNAL_STORAGE

标签: androiddownloadpathpermissionsprovider

解决方案


假设您要访问下载文件夹以获取图像文件

Intent intent = new Intent();
intent.setType("image/*");
if (Build.VERSION.SDK_INT <19)
    intent.setAction(Intent.ACTION_GET_CONTENT);
else
    intent.setAction(Intent.ACTION_OPEN_DOCUMENT);
startActivityForResult(Intent.createChooser(intent, "Select Image"), requestSelectImage);

推荐阅读