将文件下载到 Android 11 上的下载文件夹
Posted
技术标签:
【中文标题】将文件下载到 Android 11 上的下载文件夹【英文标题】:Download files to the Download folder on Android 11 【发布时间】:2021-05-28 13:37:08 【问题描述】:这可能是一个愚蠢的问题,但我真的需要一个答案。
据我了解,从 android 10 开始,推荐的方式是将文件保存到系统为其分配的应用程序的内部目录中。
在我的应用程序中,用户下载内容,然后可以(并且经常这样做)使用 Uri 方案将其删除或导入游戏。尝试保存文件时 this way我可以保存文件甚至删除它,但不能导入。保存到缓存不适合我的应用程序。有些方法取决于设备上是否存在已保存的文件。
但是,在DownloadManager
的帮助下,我可以保存、删除文件并将文件从下载目录导入到游戏中。
问题:我可以在Android 11及更高版本上将文件保存到下载文件夹吗?如果不能,请告诉我另一种方法,以免违反任何规则。
非常感谢您的关注!
【问题讨论】:
理论上你可以使用ContentResolver.openOutputStream和MediaStore.Downloads.EXTERNAL_CONTENT_URI
并在那里写你的文件。更多信息here。从来没有以这种方式测试过下载
I can save the file and even delete it, but not import
为什么不呢?我看不出有什么原因。
with the help of DownloadManager, I can save, delete and import files into the game from the Downloads directory.
很好。但是我不理解。你说Downloads里面有个文件然后DownloadManager可以把它导入到游戏里?那到底发生了什么?谁将该文件放入“下载”中以及如何放入?
can I save files to the Download folder on Android 11
当然可以。使用下载管理器。
我不明白 getFilesDir() 不可用。或 getExternalFilesDir()。请解释一下。
【参考方案1】:
https://developer.android.com/training/data-storage/shared/documents-files#document-tree-access-restrictions
访问限制 在 Android 11(API 级别 30)及更高版本上,您无法使用 ACTION_OPEN_DOCUMENT_TREE Intent 操作来请求访问以下目录:
内部存储卷的根目录。 设备制造商认为可靠的每个 SD 卡卷的根目录,无论该卡是模拟的还是可移动的。可靠卷是应用程序在大多数情况下可以成功访问的卷。 下载目录。 (复制自 Android 文档)
【讨论】:
以上是关于将文件下载到 Android 11 上的下载文件夹的主要内容,如果未能解决你的问题,请参考以下文章
如何在没有系统确认对话框的情况下删除 Android 11 (API 30) 上的文件?
自 Android 11 (SDK30) 以来,我无法将 HTML 文件从应用程序特定存储加载到 WebView