【问题标题】:Android scoped storage and persistent filesAndroid 范围存储和持久文件
【发布时间】:2019-11-15 13:59:35
【问题描述】:

我有一个应用程序,它为外部存储上的备份文件创建目录,并在用户退出应用程序时自动创建备份文件。每周创建一个备份文件,然后使用最新信息一直覆盖一个备份文件。

  1. 备份文件无法位于getExternalFilesDir,因为它们需要在用户重新安装应用程序后继续存在。
  2. 我不能使用MediaStorage,因为它不是图片或视频。
  3. 我不能使用Storage Access Framework 要求用户每次退出应用时都保存备份文件。

那么如何使用新的 Scoped Storage 自动创建持久备份文件呢?

(如果用户想要恢复其中一个,我还需要列出所有创建的备份文件。)

【问题讨论】:

  • 为什么不使用存储访问框架到CREATE_DOCUMENT,然后保留Uri以备后用?
  • 使用 ACTION_OPEN_DOCUMENT_TREE 让用户选择一个分区。之后,您可以写入创建文件夹和文件的整个分区。再也不用问用户了。
  • (I also need to list all created backup files, if the user wants to restore one of them.) 使用 ACTION_OPEN_DOCUMENT 可以让用户选择正确的文件。
  • 如果我使用 ACTION_OPEN_DOCUMENT_TREE 并让用户选择文件夹并使用持久 URI,我是否拥有对该文件夹中文件的完全读写权限?
  • ..清除应用数据时权限会丢失吗?

标签: android scoped-storage


【解决方案1】:

备份适用于用户丢失设备、购买新设备、安装应用程序、登录并按原样获取数据的情况。

您的问题似乎是您试图在用户设备上留下他可能不需要的东西,因为他删除了该应用程序。如果它是许多应用程序可以查看或编辑的图像、音乐、文档等一般文件 - 将它们留在那里并且不在乎。如果只是您的应用数据 - 它们应该在您的应用安装时存在,而在应用删除时消失。

只备份到云端是有意义的。如果您不需要个人服务器,可以选择:实现与 Dropbox 或 Google Drive 的同步。最好的选择是在每次使用该服务关闭应用程序后更新应用程序的数据。

【讨论】:

  • App 的数据在被删除后仍然存在的原因有很多。请考虑一下录音机:即使我不再需要该应用程序,我也需要录制的文件。或者关于一个有很多设置/初始化设置的大应用程序,我不想在每次安装时重新设置所有这些设置(这种情况对于经常更改 Android 版本的非官方 ROM 用户来说是最重要的) .所以对于“为什么App为什么要在被删除中幸存下来”没有任何固定的角色,但是如果开发者想要这样做,它应该能够实现它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-06-02
  • 1970-01-01
  • 1970-01-01
  • 2021-01-02
  • 1970-01-01
  • 1970-01-01
  • 2021-06-03
相关资源
最近更新 更多