Как я могу запросить разрешение на доступ к внешнему файлу в Android Q? - PullRequest
0 голосов
/ 29 апреля 2019

Слышно Android Q представил новую функцию безопасности под названием «Scoped Storage» , которая ограничивает доступ к файлам во внешнем хранилище.Моя проблема заключается в том, что я должен сохранить текстовый документ в указанном пользователем месте из приложения.Требуется ли какое-либо разрешение вместо READ_EXTERNAL_STORAGE и WRITE_EXTERNAL_STORAGE в устройствах Q?

1 Ответ

1 голос
/ 29 апреля 2019

Моя проблема в том, что я должен сохранить текстовый документ в указанном пользователем месте из приложения.

Используйте ACTION_CREATE_DOCUMENT, чтобы позволить пользователю указать местоположение.Вы можете использовать ContentResolver и его openOutputStream() метод, чтобы получить OutputStream для Uri, который вы получите от ACTION_CREATE_DOCUMENT.Затем вы можете написать свой текст для этого OutputStream.

Требуется ли для этого какое-либо разрешение, а не READ_EXTERNAL_STORAGE и WRITE_EXTERNAL_STORAGE в устройствах Q?

ACTION_CREATE_DOCUMENT требуетнет разрешений и работает обратно на Android 4.4.

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

Или, если вы оставите значение от targetSdkVersion до 28 или ниже, вы можете использовать WRITE_EXTERNAL_STORAGE и писать, где хотите, как вы сделали на Android 9.0+.Однако имейте в виду, что этот подход перестанет работать с Android R и когда вы поднимете targetSdkVersion выше 28 (например, чтобы соответствовать требованиям Play Store 2020 года).Таким образом, использование ACTION_CREATE_DOCUMENT, или, возможно, getExternalFilesDir(), является лучшим долгосрочным ответом.

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