Учебник по хранилищу с ограничением для Android Studio


учебник по хранению с ограниченным объемом

Начиная с Android 10, Google изменил способ работы с хранилищем. Это стало обязательным для всех приложений, ориентированных на Android 11 и выше. Изменения были внесены с учетом конфиденциальности, чтобы пользователи не были вынуждены предоставлять доступ ко всем файлам на своем устройстве. Это руководство по хранению с ограниченным объемом информации расскажет вам, что вам нужно знать.

Учебное пособие по хранению с ограниченным объемом: версия для заметок на скалах

При использовании хранилища с заданной областью пользователям необходимо будет предоставлять разрешение каждый раз, когда приложение пытается получить доступ к файлу, который оно не создавало. Разработчикам также рекомендуется размещать файлы в определенных папках, тем самым уменьшая беспорядок и беспорядок. Любые файлы вне этих папок будут удалены после удаления приложения.

См. Также: Руководство по разработке приложений для Android за 5 простых шагов.

Хранилище с заданной областью предоставляется по умолчанию и зависит от типа хранимого файла (они организованы как «коллекции»). Приложениям предоставляется доступ только к тем типам хранилищ, которые они фактически используют.

На практике это означает, что разработчикам больше не нужно использовать разрешение WRITE_EXTERNAL_STORAGE, поскольку это не влияет на доступ приложения к хранилищу. Одни вещи становятся проще, другие – намного сложнее. Прочтите оставшуюся часть этого руководства по хранению с ограниченным объемом, чтобы узнать, что вам нужно знать.

Доступ к хранилищу для конкретного приложения

Приложениям не требуются специальные разрешения для доступа к хранилищу с ограниченным доступом, и нет изменений в способе сохранения во внутреннем хранилище. Однако есть несколько вещей, которые следует учитывать при использовании хранилища для конкретных приложений, которые мы рассмотрим в этом руководстве по хранилищу с ограниченным объемом.

хранилище для конкретного приложения

Предоставлено: Эдгар Сервантес / Android Authority.

Во внешнем хранилище есть два места для конкретных приложений, которые в первую очередь следует использовать, когда внутреннего хранилища недостаточно. Они предназначены для постоянных и кешированных файлов приложения соответственно.

Чтобы получить доступ к этим расположениям, приложение должно сначала убедиться, что хранилище доступно (для внутреннего хранилища доступность гарантируется). Запросите состояние тома с помощью Environment.getExternalStorageStage (). Если возвращается MEDIA_MOUNTED, вы можете читать и записывать файлы во внешнее хранилище.

Далее вам нужно будет выбрать физическое хранилище. Это может означать, например, выбор между внутренней памятью и SD-картой. Вызовите ContextCompat.getExternalFilesDir (). Первый элемент в возвращаемом массиве считается «основным» вариантом внешнего хранилища, и его следует использовать в большинстве случаев.

Чтобы получить доступ к файлам приложения из внешнего хранилища, вызовите getExternalFilesDir ().

Существует ряд готовых каталогов, предназначенных для помощи в логическом хранении файлов. К ним относятся:

DIRECTORY_ALARMS
DIRECTORY_AUDIOBOOKS
DIRECTORY_DCIM
DIRECTORY_DOCUMENTS
DIRECTORY_DOWNLOADS
DIRECTORY_MOVIES
DIRECTORY_MUSIC
DIRECTORY_NOTIFICATIONS
DIRECTORY_PICTURES
DIRECTORY_PODCASTS
DIRECTORY_RINGTONES
DIRECTORY_SCREENSHOTS

Используйте их или передайте «null», если вы хотите получить доступ к корневому домену для каталога конкретного приложения.

Чтобы добавить файлы приложения в кэш внешнего хранилища, используйте externalCacheDir. Чтобы удалить их, используйте delete ().

Доступ к другим файлам

Наконец, чтобы завершить это руководство по хранению с ограниченным объемом, мы должны рассмотреть, как мы получаем доступ и записываем файлы, которые используются в системе.

Приложения должны выбирать между «хранилищем для конкретного приложения» или «общим хранилищем». Последний используется, когда вы хотите обмениваться файлами с другими приложениями, такими как изображения или документы. Разработчики, которые хотят получить доступ к файлам за пределами своего каталога приложения следует использовать разрешение MANGE_EXTERNAL_STORAGE. Вы также можете использовать действие намерения ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION, чтобы отправить пользователям страницу настроек, где они могут разрешить доступ для вашего приложения.

MANAGE_EXTERNAL_STORAGE предоставляет доступ к содержимому таблицы MediaStore.Files, корневому каталогу USB-накопителя OTG и SD-карты, а также всем внутренним каталогам (кроме sdcard / Android и его подкаталогов). Это ограничение распространяется на каталоги других приложений для конкретных приложений, так как они расположены в sdcard / Android / data.

Записать файл во внешнее хранилище

Мы больше не можем использовать файловые API для прямого доступа к файлам. Вместо этого мы должны использовать Платформа доступа к хранилищу для выбора файлов и папок, и URI для медиафайлов. Например, для доступа к фотографии мы должны теперь использовать URI, а не MediaStore.Images.Media.DATA. Это уже было рекомендованной практикой, но теперь она является обязательной.

См. Также: Введение в консоль Google Play для разработчиков.

Для доступа к простым файлам с помощью Storage Access Framework есть три основных действия:

ACTION_OPEN_DOCUMENT
ACTION_OPEN_DOCUMENT_TREE
ACTION_CREATE_DOCUMENT

Это довольно очевидно. Для отображения изображений мы сначала получаем идентификатор изображения с помощью MediaStore.Images.Media._ID, а затем создаем Uri с ContentUris.withAppendedID. Это значительно более длительный процесс, чем раньше, и, безусловно, увеличивает время обучения тому, что может быть относительно простым процессом.

На этом руководство по хранению с ограниченным объемом информации завершается! Что вы думаете о хранилище с ограниченным объемом? Это необходимое обновление для системы безопасности или неприятное препятствие для разработчиков?

Чтобы получить больше новостей, функций и руководств для разработчиков от Android Authority, не пропустите подписку на ежемесячную рассылку новостей ниже!

Будьте в курсе всего, что связано с разработкой для Android

Присоединяйтесь к нашей команде разработчиков, чтобы получать ежемесячный информационный бюллетень для разработчиков, который курируют штатные эксперты!

зарегистрируйтесь сейчас Регистрируясь, вы соглашаетесь с нашими Условиями использования и принимаете методы обработки данных, указанные в нашей Политике конфиденциальности. Вы можете отменить подписку в любое время.


0 Comments

Ваш адрес email не будет опубликован. Обязательные поля помечены *