Android 11:How/where 写入应该在卸载后仍然存在的混合媒体文件

Android 11: How/where to write mixed media files that should survive uninstall

我正在编写一个针对 Android11 的特定用例相机应用程序。当我点击记录时,我想在某处创建一个新目录(名称基于时间戳等),其中包含结果视频以及在录制过程中也写入的一大堆其他自定义 YAML/JSON/CSV 文件(逻辑上属于录制的“输出”)。

我希望所有生成的文件都能在应用程序中存活下来 uninstall/reinstall 因为我不想让用户在卸载应用程序时丢失他们曾经记录的所有内容。如何使用 Android 11 中的新范围存储更改等执行此操作?

查看概述 here,我可以看到:

似乎剩下的唯一选择是使用 MANAGE_EXTERNAL_STORAGE 并将数据放在主目录中我想要的任何位置,但这似乎有点极端,只是为了能够与我制作的视频一起保存一些文本文件。此外,该权限是 Android 11 特定的。如果我想支持旧的 Android 版本,我需要做什么?

我最好的选择是什么?有没有我错过的选项?

but this is not suitable because it requires a system file picker every time you want to write something

没有

使用ACTION_OPEN_DOCUMENT_TREE让用户选择文档树。在那里,您可以创建自己的子树并将自己的文档放入该子树中。除了初始 ACTION_OPEN_DOCUMENT_TREE 请求本身之外,您不需要“系统文件选择器”。生成的文档将在卸载后继续存在。

您可以使用经典文件方法在 public 目录中创建自己的目录,例如 DCIM、图片、音乐或电影。