我正在使用Download manager
下载文件并将其保存到外部存储中,如下所示:
DownloadManager.Request req = new DownloadManager.Request(uri);
req.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI | DownloadManager.Request.NETWORK_MOBILE)
.setDestinationInExternalFilesDir(TextReaderActivity.this, null, "podcasts/" + Integer.toString(article.id) + PODCAST_EXTENSION);
我得到以下异常:
Exception: need WRITE_EXTERNAL_STORAGE permission to use DESTINATION_FILE_URI: uid 10052 does not have android.permission.WRITE_EXTERNAL_STORAGE.
我读到我在写入外部目录时不需要为
WRITE_EXTERNAL_STORAGE
请求maxSdkVersion > 18
权限,为什么这里不需要DownloadManager
呢?更新:
最佳答案
您引用的有关WRITE_EXTERNAL_STORAGE
的规则适用于您的进程写入外部存储时的规则,然后仅适用于getExternalFilesDir()
和相关目录。
在这种情况下,您不会写入外部存储。您正在要求DownloadManager
写入外部存储。 DownloadManager
(或更准确地说是DownloadManager
与之通信的过程)要求您拥有此许可,而且看来这样做是与API级别无关的。
关于android - 为什么对于maxSdkVersion> 18,下载管理器需要 `WRITE_EXTERNAL_STORAGE`,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30432837/