【发布时间】:2019-07-06 00:01:09
【问题描述】:
当我从 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。
【问题讨论】:
-
你到底是怎么得到
Uri的?而且,“最终被缓存”是指您正在将Uri写入磁盘并尝试稍后再次使用它吗? -
是的,路径解析尝试从几个前缀加载它,我在其中一些前缀中遇到了这个异常。由于它最终失败,路径解析继续进行,我最终加载它并从它的
String externalFile = context.getCacheDir().getAbsolutePath() + "/" + FileUtils.getFileName(uri, context);缓存 -
好的...那么你到底是怎么得到
Uri的? -
我的意思是:
context.getContentResolver().openInputStream(uri);然后我将它写入之前分配的路径。但我正在尝试检索下载文件夹中文件的绝对路径(使用本机文件资源管理器),但不知何故,某些文件(在下载文件夹中)似乎不可能,我必须使用@987654329 @,复制它,然后使用副本的路径。 -
我面临着完全相同的问题。你有没有想过解决方案?
标签: android download path permissions provider