Почему не требуется WRITE_EXTERNAL_STORAGE на Android Q и выше - PullRequest
1 голос
/ 20 марта 2020

Я использую DownloadManager, чтобы загрузить фотографию и сохранить ее во внешнем каталоге изображений:

.setDestinationInExternalPublicDir(Environment.DIRECTORY_PICTURES, File.separator + filename)

Для Marshmallow требуется WRITE_EXTERNAL_STORAGE (как и ожидалось), но на Android Q и выше он отлично работает без разрешения. Почему это так? Это из-за ограниченного хранилища?

1 Ответ

1 голос
/ 20 марта 2020

Android do c:

Android определяет следующие разрешения для чтения и записи доступа к внешнему хранилищу: READ_EXTERNAL_STORAGE и WRITE_EXTERNAL_STORAGE.

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

Чтобы дать пользователям больший контроль над своими файлами и ограничить файловый беспорядок, приложения, которые target Android 10 (уровень API 29) и выше по умолчанию предоставляют доступ с областью к внешнему хранилищу или хранилище с областью действия. Такие приложения имеют доступ только к каталогу приложения c, заданному приложением, на внешнем хранилище, а также к определенным c типам носителей, созданных приложением.

Для получения дополнительной информации

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...