我正在使用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/

10-10 17:47