Android 10及以上版本文件备份还原与Mediastore历史文件访问咨询
Android 10+ MediaStore备份文件访问及还原方案解答
问题1:Android 10及以上系统中,应用重装后是否有方法可以访问MediaStore中此前创建的文件
默认无权限访问,仅两种特殊场景可实现访问:
- 应用申请了特殊权限
MANAGE_EXTERNAL_STORAGE:该权限可获得公共存储的全量访问权限,获取后可直接读取公共目录下任意符合格式的文件,包括卸载前创建的备份文件。注意该权限属于Google Play受限权限,仅文件管理、备份类等符合用途规范的应用可申请上架。 - 引导用户主动选中备份文件:通过系统文件选择器让用户手动定位到旧备份文件,拿到对应URI后即可获得读取权限,不需要申请任何额外存储权限。
问题2:如果无法访问此前创建的备份文件,应当如何实现还原功能
可根据你的应用场景选择以下适配方案:
- 引导用户手动选择备份文件:调用系统
ACTION_OPEN_DOCUMENT意图拉起系统文件选择器,引导用户选中之前保存在公共目录的备份文件,通过getContentResolver().openInputStream(uri)即可读取备份文件内容完成还原,还可以调用takePersistableUriPermission()申请该URI的持久化访问权限,后续应用再次打开时无需重复让用户选择。 - 调整备份存储策略:如果备份文件无需用户独立于应用外使用,可将备份文件存储到应用专属外部存储目录(路径为
/sdcard/Android/data/[应用包名]/files/),该目录下的文件应用可直接读写无需额外权限,缺点是应用卸载时该目录会被系统同步删除,仅适合无需跨卸载留存的备份场景。 - 云备份同步:可增加云备份功能,将备份文件上传到用户的云存储空间,重装后直接从云端拉取备份文件完成还原,完全规避本地存储权限限制。
内容的提问来源于stack exchange,提问作者heymanthanks
相关产品推荐
相关产品推荐

