最近,我不得不实现一个功能来保存下载文件夹中的本地文件。这个挑战伴随着一些我还没有找到答案的问题。
MANAGE_EXTERNAL_STORAGE
和 WRITE_EXTERNAL_STORAGE
与 READ_EXTERNAL_STORAGE
的区别是什么?
以下是google for MANAGE_EXTERNAL_STORAGE
的描述
Google限制高风险或敏感权限的使用,包括一种名为“所有文件访问”的特殊应用程序访问。这仅适用于针对Android11 (API级别30)并声明MANAGE_EXTERNAL_STORAGE权限的应用程序.
和WRITE_EXTERNAL_STORAGE
的定义
允许应用程序向外部存储写入。从API级别19开始,在特定于应用程序的目录中读取/写入文件不需要此权限.
那么,有什么区别呢?我应该什么时候使用每一个?为什么Google需要3个权限来处理外部存储?我应该要求在下载文件夹中保存一个文件吗?
发布于 2022-10-03 13:03:13
MANAGE_EXTERNAL_STORAGE
。
WRITE_EXTERNAL_STORAGE
android:requestLegacyExternalStorage="true"
的Android 10 ),允许在Android 11+上对SDK所称的所有外部存储上的应用程序。
为什么谷歌需要3个权限来处理外部存储?
因为随着时间的推移一切都变了。被认为适合于Android2.x (WRITE_EXTERNAL_STORAGE
对外部存储具有完全的写访问权限)的方法存在问题。
我应该要求在下载文件夹上保存一个文件吗?
最有可能的是,答案是“不要写信给Downloads/
”。请记住,对于应用程序没有创建的文件,您不能在Android 11+上读取对这些文件的访问。这意味着,如果您尝试在那里写入一个文件,并且已经有一个文件名是由其他东西创建的,那么您就会出现错误--您没有能力覆盖其他应用程序创建的文件。
通常,更好的答案是使用ACTION_CREATE_DOCUMENT
/ ActivityResultContracts.CreateDocument
,并允许用户告诉您在用户的本地存储或云存储中,用户希望将这些内容放在哪里。
但是,如果您坚持使用Downloads/
,那么WRITE_EXTERNAL_STORAGE
就足够了。
https://stackoverflow.com/questions/73909410
复制相似问题