如何解决重新安装应用程序后访问Android外部存储中的图像
我们正在为该应用程序实现备份/还原系统。我们使用了Android指南中记录的Google Drive API
我们还将图像URI存储在数据库中。在还原过程中,我们获得了URI,但是在重新安装应用程序时失去了访问图像的权限。我们有以下例外。
失败的查询:java.lang.SecurityException:权限被拒绝:正在打开 供应商...要求您使用 ACTION_OPEN_DOCUMENT或相关API
我们通过“ ACTION_OPEN_DOCUMENT”获取图片URI,但在删除/安装应用程序后无法持久保存。有哪些相关的API?我们是否需要将图像移动到特定于应用程序的文件夹中,还需要备份图像本身?
感谢您阅读本文档,对您的帮助表示感谢
解决方法
相关的API是什么?
ACTION_OPEN_DOCUMENT_TREE
和ACTION_CREATE_DOCUMENT
可能是他们所指的。
我们是否需要将图像移动到特定于应用程序的文件夹中并且还需要备份图像本身?
我们不能真正回答这个问题,这既是一项商业决策,又是一项技术决策。但是,如果您的应用已卸载并重新安装:
- 您将无法访问由从Storage Access Framework获得的
Uri
值标识的内容 - 在Android 10或更高版本上,您将无法访问较旧的应用安装所创建的任何文件,这些文件在卸载过程中仍然有效(例如,它们位于共享集合中)
如何解决该问题取决于您。除了您的建议,您还可以:
- 已将所有图像存储在单个目录树中(通过
ACTION_OPEN_DOCUMENT_TREE
获取),将相对路径存储在数据库中,并在应用恢复后请求再次访问该树 - 在备份数据库之前,先从数据库中删除所有
Uri
值,并且如果恢复了数据库,则无法访问这些图像, - 将图像数据存储在数据库本身中(通常不建议使用,但在技术上可行)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。