我正在编写一个针对 Android 11 的特定用例相机应用程序。当我点击记录时,我想在某处创建一个新目录(名称基于时间戳等),其中包含生成的视频以及整个堆其他也在录制过程中写入的自定义 YAML/JSON/CSV 文件(逻辑上属于录制的“输出”)。
我希望所有生成的文件在应用程序卸载/重新安装后都能保存下来,因为我不想让用户在卸载应用程序时面临丢失他们记录的所有内容的风险。如何利用 Android 11 中新的范围存储更改等来做到这一点?
查看概述here https://developer.android.com/training/data-storage, 我理解了:
-
应用程序特定文件, 应用程序偏好设置 and Database显然不适合,因为这些文件在卸载后无法保存
-
文件和其他文件使用存储访问框架,但这并不合适,因为每次要写入内容时都需要系统文件选择器。这会扰乱录制/用户体验的流程,并且没有相机应用程序能像这样工作。
-
数据集/BlobStoreManager (here https://developer.android.com/training/data-storage/shared)也不适合我的用例。
-
媒体商店API看起来它应该是那个,但在生成整个输出目录(包括自定义 YAML/JSON/CSV 文本文件)方面,它似乎无法做到我想要的,所有这些文件都属于一起。我的目标是用户在任何时候都可以简单地转到文件资源管理器,导航到适当的文件夹,然后将包含录音的文件夹复制到他们的计算机或其他设备上,以保存/查看数据。如果您的应用程序使用范围存储,即使 MediaStore.Files 似乎也不能保证您实际上可以做到这一点。
似乎剩下的唯一选择是使用 MANAGE_EXTERNAL_STORAGE 并将数据放在主目录中我想要的任何位置,但这似乎只是为了能够保存一些文本文件以及我制作的视频。此外,该权限是 Android 11 特定的。如果我想支持较旧的 Android 版本,我需要做什么?
我在这里最好的选择是什么?我错过了一个选项吗?
但这不合适,因为每次你想写东西时它都需要一个系统文件选择器
No.
Use ACTION_OPEN_DOCUMENT_TREE
让用户选择一个文档树。在那里,您可以创建自己的子树并将自己的文档放入该子树中。除了初始文件之外,您不需要“系统文件选择器”ACTION_OPEN_DOCUMENT_TREE
要求自己。并且生成的文档将在卸载后继续存在。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)