Android 10/11(API 29/30)下是否可对非自有文件进行破坏性修改?
Android 共享存储批量修改照片的合规实现方案
方案1:SAF持久化目录权限(最稳妥,上架无忧)
- 首次使用时仅需唤起1次SAF文件夹选择对话框,引导用户选择需要批量操作的目标目录(如DCIM)
- 拿到目录Uri后调用
takePersistableUriPermission()申请持久化访问权限,系统会永久授予你该目录及其子目录所有文件的读写权限 - 后续操作无需再弹任何授权框,可直接批量遍历、修改、写回目录下的所有图片原文件,不需要重命名
方案2:媒体文件专属权限(操作更便捷)
- Android 11及以上版本申请
READ_MEDIA_IMAGES权限,修改非自有媒体文件时系统会统一弹出1次修改授权,用户同意后即可批量操作所有公共图片目录下的文件,直接写回原文件 - 如果你的应用核心功能就是图片编辑,也可申请
MANAGE_EXTERNAL_STORAGE权限,提交功能说明后可正常通过Play Store审核,获得全共享存储的读写权限 - Android 10版本可在
AndroidManifest.xml中配置android:requestLegacyExternalStorage="true",沿用旧存储权限逻辑,无需适配分区存储 - Android 9及以下版本正常申请
WRITE_EXTERNAL_STORAGE权限即可完成所有文件操作
两种方案都完全符合Play Store上架规则,不需要面向旧版本开发,也不用每次操作都弹出SAF对话框,可满足批量处理DCIM目录图片的需求。
内容的提问来源于stack exchange,提问作者Al Ro
相关产品推荐
相关产品推荐

