gpt4 book ai didi

android - 为什么下载管理器需要 `WRITE_EXTERNAL_STORAGE` maxSdkVersion > 18

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:57:46 37 4
gpt4 key购买 nike

我正在使用下载管理器下载文件并将其保存到外部存储,如下所示:

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.

我读到在写入外部目录时不需要为 maxSdkVersion > 18 请求 WRITE_EXTERNAL_STORAGE 权限,为什么这里不需要它下载管理器?

更新:

On Android 4.4 and up, the rules are a bit different:
- To read or write in the directory trees rooted at getExternalFilesDir() and getExternalCacheDir(), you do not need a permission
- To write to anywhere else on external storage, you need WRITE_EXTERNAL_STORAGE
- To read from anywhere else on external storage, you need either WRITE_EXTERNAL_STORAGE (if you already have that) or READ_EXTERNAL_STORAGE (if not)

最佳答案

您引用的关于WRITE_EXTERNAL_STORAGE 的规则适用于您的进程 何时写入外部存储,然后仅适用于您的getExternalFilesDir() 和相关目录。

在这种情况下,您没有写入外部存储。您要求 DownloadManager 写入外部存储。 DownloadManager——或者更准确地说,DownloadManager 与之对话的进程——要求您拥有此权限,而且这样做似乎与 API 级别无关。

关于android - 为什么下载管理器需要 `WRITE_EXTERNAL_STORAGE` maxSdkVersion > 18,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30432837/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com