Как я могу использовать хранилище с областью действия Android для хранения больших файлов, специфичных для приложений?

#android

#Android

Вопрос:

У меня есть старое приложение для рисования на Android, которое хранит рисунки (файлы.PNG) в определенной папке на внешнем хранилище. С ограниченным хранилищем в Android 11 мне нужно найти способ сохранения файлов, но я, похоже, не могу найти решение, которое удовлетворяет моим потребностям. У моего приложения есть собственный пользовательский интерфейс галереи, как и у многих приложений для рисования, так что я могу управлять UX выбора/просмотра.

Я пытался:

  1. MediaStore: Я вставил файлы в MediaStore. Проблема, с которой я столкнулся здесь, заключается в том, что я не смог найти способ запросить только файлы, созданные моим приложением. Запрос в mediastore всегда возвращает кучу вещей, которые мне не нужны.
  2. Структура доступа к Хранилищу. Моя интуиция с этой структурой заключается в том, что я, вероятно, потратил бы много времени и потенциально пожалел бы о том, что пошел по этому пути. Мне не нравится идея не контролировать селектор файлов (галерея). Мне также не нравится полагаться на намерения в важной части моего приложения.
  3. MANAGE_EXTERNAL_FILES. Основываясь на критериях, определенных Google, мое приложение не сможет использовать это, хотя это было бы здорово (так как я мог бы сохранить свой старый код).
  4. Используйте внутреннее хранилище файлов. Я закодировал это, и это действительно чисто, но я не решаюсь развернуть это, потому что удаление будет означать, что пользователи потеряют свои документы. Обратите внимание, что у меня есть намерение поделиться, поэтому пользователи могут «экспортировать» файлы по одному за раз.

Чего я хочу:

  1. Для записи файлов, которые не удаляются, когда пользователь удаляет мое приложение.
  2. Чтобы записать мои файлы куда-нибудь, чтобы пользователь мог их так или иначе скопировать.
  3. Простота. Я не хочу запутывать существующих пользователей, кардинально меняя ситуацию.

Я что-то упускаю из виду в отношении своих возможностей здесь? Может ли Mediastore эффективно разделять мои файлы, чтобы я мог показывать их в галерее? Кажется ли мне, что внутреннее хранилище является лучшим вариантом для меня?

Ответ №1:

Просто создайте свои файлы по старинке в подпапке приложений в каталоге общедоступных документов.

Никаких специальных разрешений не требуется.

Комментарии:

1. Спасибо @blackapps, я не думал, что мы все еще можем писать в эти папки. Это обеспечивает супер чистое решение. В итоге я написал прямо в Pictures/lt;MyAppgt;. Затем я вызвал файл MediaCollectionScanner.scanFile после сохранения своего файла, а затем я получаю преимущество от того, что мои файлы отображаются в Google Фотографиях в папке lt;MyAppgt;. Мило!