Я пишу специальное приложение для камеры, предназначенное для Android 11. Когда я нажимаю запись, я хотел бы создать где-нибудь новый каталог (с именем, основанным на отметке времени и т. д.), который содержит полученное видео, а также целую кучу другие пользовательские файлы YAML/JSON/CSV, которые также записываются в процессе записи (логически относятся к результату записи).
Я хотел бы, чтобы все сгенерированные файлы сохранились после удаления/переустановки приложения, поскольку я не хочу рисковать тем, что пользователи потеряют все, что они когда-либо записали, если они удалят приложение. Как мне это сделать с новыми изменениями в области хранения и т. д. в Android 11?
Глядя на обзор здесь, я вижу, что:
- Файлы приложения, Настройки приложения и База данных явно не подходят, так как среди прочего эти файлы не сохраняются после удаления.
- Документы и другие файлы используют Storage Access Framework, но это не подходит, поскольку каждый раз, когда вы хотите что-то написать, требуется средство выбора системных файлов. Это нарушило бы процесс записи/работы пользователя, и ни одно приложение камеры не работает так.
- Наборы данных/BlobStoreManager (здесь) также не подходит для моего варианта использования.
- MediaStore API выглядит так, как будто он должен быть единственным, но он не может делать то, что я хочу, с точки зрения создания целого каталога выходных данных, включая пользовательские текстовые файлы YAML/JSON/CSV, которые все принадлежат друг другу. Моя цель состоит в том, чтобы пользователь в любое время мог просто зайти в проводник, перейти к соответствующей папке и просто скопировать папку(и) с записями на свой компьютер или что-то еще, чтобы сохранить/просмотреть данные. Даже MediaStore.Files, похоже, не гарантирует, что вы действительно сможете это сделать, если ваше приложение использует хранилище с ограниченной областью действия.
Единственный оставшийся вариант — использовать MANAGE_EXTERNAL_STORAGE и помещать данные в любое место в домашнем каталоге, но это похоже на чрезмерное разрешение, которое нужно запрашивать только для того, чтобы иметь возможность сохранять некоторые текстовые файлы вместе с мои произведенные видео. Кроме того, это разрешение специфично для Android 11. Если я хочу поддерживать более старые версии Android, что мне нужно сделать?
Какой мой лучший выбор здесь? Есть вариант, который я пропустил?