Android开发:可跨应用访问且卸载不丢失的文件存储推荐方案
Android多文件存储方案(满足卸载保留、跨应用访问)
推荐存储位置
Android 10及以上(API ≥29)
- 系统公共目录:优先选择
Download、Documents、Pictures等系统预设的公共文件夹。API 29及以上推荐通过MediaStoreAPI操作这些目录中的文件;若需要更灵活的位置选择,使用**存储访问框架(SAF)**让用户自主指定存储路径,兼容性和灵活性更好。 - 注意:
Environment.getExternalStoragePublicDirectory()方法已被标记为废弃,不推荐继续使用。
Android 9及以下(API ≤28)
- 直接使用外部存储公共目录,通过
Environment.getExternalStoragePublicDirectory()获取对应目录,比如Environment.DIRECTORY_DOWNLOADS(下载目录)、Environment.DIRECTORY_DOCUMENTS(文档目录)。
所需权限
Android 10及以上(API ≥29)
- 若通过
MediaStore写入公共媒体目录(如Pictures),无需申请WRITE_EXTERNAL_STORAGE权限;若需读取其他应用的公共文件,需在Manifest中声明READ_EXTERNAL_STORAGE,并在运行时动态申请(Android 13及以上,读取媒体文件需分别申请READ_MEDIA_IMAGES、READ_MEDIA_VIDEO、READ_MEDIA_AUDIO)。 - 若使用SAF,无需申请任何存储权限,通过Intent唤起系统文件选择器,用户授权后即可完成文件操作。
- Android 11及以上,非媒体类文件仅允许写入
Download公共目录,其他非媒体目录需通过SAF操作。
Android 9及以下(API ≤28)
- 必须申请
WRITE_EXTERNAL_STORAGE权限(申请该权限后会自动获得READ_EXTERNAL_STORAGE权限),这属于危险权限,需在Manifest中声明并在运行时动态申请用户授权。
关键注意事项
- 避免使用应用私有外部存储(
getExternalFilesDir()),该目录会随应用卸载被删除,不符合“卸载后保留”的要求。 - 公共目录下的文件默认支持其他应用访问(需对方应用拥有对应读取权限),SAF授权的路径也支持跨应用访问。
内容的提问来源于stack exchange,提问作者Anirudh Kachroo
相关产品推荐
相关产品推荐

