Как сохранить файлы во внешнем хранилище с областью хранения с Android Q, в то время как совместимо со старым уровнем API в android? - PullRequest
0 голосов
/ 26 февраля 2020

С объемом хранения, поставляемым с Android Q, мы можем создавать или получать доступ к общим файлам только во внешнем хранилище с помощью MediaStore api или SAF.
Однако, согласно результатам моего эксперимента, относительные пути и отображаемые имена не будут работать даже если указано, когда я пытаюсь вставить объект ContentValues ​​с API MediaStore на платформах ниже Android Q (как в коде ниже), что делает этот API не полностью функциональным.

contentResolver.insert(externalUri, ContentValues().apply {
    put(MediaStore.Images.Media.DISPLAY_NAME, "${prefix}_${datetimeString}.jpg")
    put(MediaStore.Images.Media.RELATIVE_PATH, Environment.DIRECTORY_DCIM)
})

С другой стороны, я не думаю, что мне следует использовать SAF, поскольку довольно раздражает, когда пользователи выбирают место для сохранения медиа-файла каждый раз.
Другой возможный подход - откат к Environment.getexternalstoragedirectory, но, как сообщается, этот метод не рекомендуется IDE, даже если я проверил уровень API в своем коде. Поэтому я думаю, что это не рекомендуется.
Есть ли лучший способ сохранить общий медиафайл (в указанное место с указанным именем), в то время как он совместим со старым уровнем API?

...