我正在通过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
2条答案
按热度按时间hlswsv351#
DownloadManager
将下载工作委托给系统提供的单独应用。该应用有权写入少数位置,即使您的应用无权。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返回)。