“write_external_storage больше не предоставляет доступ для записи при использовании Android 10+”. Это означает, что начиная с Android 10 (уровень API 29) и более поздних версий одного только разрешения WRITE_EXTERNAL_STORAGEнедостаточно для предоставления доступа на запись во внешнее хранилище.
Чтобы получить доступ на запись во внешнее хранилище на Android 10 и более поздних версиях, вам необходимо использовать новую платформу доступа к хранилищу, предоставляемую Android. Вот несколько методов, которые вы можете использовать для записи во внешнее хранилище:
-
Хранилище с ограниченной областью действия. В Android 10 Android представила хранилище с ограниченной областью действия как более безопасный и ориентированный на конфиденциальность подход к хранению файлов. При использовании ограниченного хранилища каждое приложение имеет собственное изолированное пространство для хранения, и по умолчанию приложения могут получать доступ только к своим файлам. Вы можете использовать API MediaStore для взаимодействия с медиафайлами и Storage Access Framework для общего доступа к файлам.
-
API MediaStore. API MediaStore позволяет взаимодействовать с мультимедийными файлами, такими как изображения, видео и аудиофайлы. С помощью этого API вы можете вставлять, обновлять и удалять медиафайлы. Он обеспечивает стандартизированный способ доступа и организации медиафайлов на разных устройствах Android.
-
Среда доступа к хранилищу. Платформа доступа к хранилищу позволяет пользователям просматривать и выбирать файлы из разных источников, таких как внутреннее хранилище, внешнее хранилище и службы облачного хранения. Вы можете использовать намерения
ACTION_OPEN_DOCUMENTилиACTION_CREATE_DOCUMENT, чтобы позволить пользователям выбирать файлы для чтения или записи. -
FileProvider: FileProvider — это поставщик контента, который позволяет безопасно обмениваться файлами с другими приложениями. Он предоставляет временный доступ к файлам с использованием URI контента и обеспечивает соблюдение разрешений на доступ к файлам. Вы можете использовать FileProvider для обмена файлами с другими приложениями или для предоставления доступа к файлам во внешнем хранилище.
Подводя итог: при использовании Android 10 и более поздних версий вам необходимо адаптировать свое приложение для использования ограниченного хранилища, API MediaStore, Storage Access Framework или FileProvider, чтобы получить доступ на запись во внешнее хранилище.