Android 10,11 文件存储
一: 11 (API 30)中的存储机制更新:
(API 级别30)进一步增强了平台功能,为外部存储设备上的应用和用户数据提供了更好的保护。此版本引入了多项增强功能,例如,可主动选择启用的媒体原始文件路径访问机制、面向媒体的批量编辑操作,以及存储访问框架的界面更新。
此版本还改进了分区存储,以便开发者更轻松地迁移到此存储模型。如需了解详情,请参阅 存储用例和最佳做法指南,以及标题为 11 存储常见问题解答的 文章。
强制执行分区存储
在 上运行但以 10(API 级别 29)为目标平台的应用仍可请求属性。应用可以利用此标记暂时停用与分区存储相关的变更,例如授予对不同目录和不同类型的媒体文件的访问权限。当您将应用更新为以 为目标平台后,系统会忽略标记。
保持与 10 的兼容性
如果应用在 10 设备上运行时选择退出分区存储,建议您继续在应用的清单文件中将设为true。这样,应用就可以在运行 10 的设备上继续按预期运行。
将数据迁移到使用分区存储时可见的目录
如果您的应用使用旧版存储模型且之前以 10 或更低版本为目标平台,您可能会将数据存储到启用分区存储模型后您的应用无法访问的目录中。在以 为目标平台之前,请将数据迁移到与分区存储兼容的目录。
二:数据的迁移: 1.对于编译版本为API 29的应用来说:
如果以为目标平台,需要在清单中标记为true,这样可以停用分区存储,然后就能做迁移。(在 11会忽略该字段,强制开启分区存储,该字段也不怎么靠谱。)
2.对于编译版本为API 30的应用来说:
要想访问外部存储,需要在清单中标记 为true,这样在的机器上覆盖安装时,才能访问旧版存储位置,才能去做迁移。(卸载重装会失效)
这里需要注意以下两点:
三:如何读写数据:
1. 数据结构:
使用 N 操作将用户引导至一个系统设置页面,在该页面上,用户可以为您的应用启用以下选项:授予所有文件的管理权限。
附带的基本操作:
参考博客: