Моя проблема в том, что я должен сохранить текстовый документ в указанном пользователем месте из приложения.
Используйте 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()
, является лучшим долгосрочным ответом.