android 为什么通过DownloadManager下载文件不需要存储权限

z9smfwbn  于 2022-12-16  发布在  Android
关注(0)|答案(2)|浏览(565)

我正在通过android DownloadManager下载一个文件,下面是de函数.

private fun downloadFile() {
        val downloadManager: DownloadManager =
            getSystemService(Context.DOWNLOAD_SERVICE) as DownloadManager

        val request =
            DownloadManager.Request(Uri.
            parse("https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf"))

        downloadManager.enqueue(request)
    }
}

下载正常进行,无需任何存储权限。
下载管理器是否可以在没有存储权限的情况下工作?我在官方文档中找不到答案。
https://developer.android.com/reference/android/app/DownloadManager

hlswsv35

hlswsv351#

DownloadManager将下载工作委托给系统提供的单独应用。该应用有权写入少数位置,即使您的应用无权。

pxq42qpu

pxq42qpu2#

如果使用外部公共目录中的设置目标
对于以Build.VERSION_CODES.Q或更高版本为目标的应用程序,不需要WRITE_EXTERNAL_STORAGE权限,并且dirType必须是已知公共目录之一,如环境#DIRECTORY_DOWNLOADS、环境#DIRECTORY_PICTURES、环境#DIRECTORY_MOVIES等。
对于设置目标Uri
对于以Build.VERSION_CODES.Q或更高版本为目标的应用程序,不需要WRITE EXTERNAL_STORAGE权限,并且URI必须引用应用程序所拥有的目录中的路径(例如,Context#getExternalFilesDir(String))或顶级下载目录中的路径(由Environment#getExternalStoragePublicDirectory(String)使用Environment#DIRECTORY_DOWNLOADS返回)。

相关问题