#android #android-camera #android-camera2 #android-contentresolver
#Android #android-камера #android-camera2 #android-contentresolver
Вопрос:
Я написал код для получения файлового дескриптора изображения, снятого камерой в Android.
if (file.exists()) {
val values = ContentValues()
values.put(MediaStore.Images.Media.DATA, filePath)
return context.contentResolver.insert(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values)
} else {
null
}
Это возвращает uri содержимого для изображения, захваченного камерой. Когда я пытаюсь получить дескриптор файла с помощью
context.ContentResolver.openFileDescriptor(contentUri, «r», null), он выдает исключение FileNotFound.
Приведенный выше код работал в targetSdk 28. После обновления targetSdk до 29 я получаю исключение FileNotFound.
Комментарии:
1. На Android 10 . Столбец ДАННЫХ не должен использоваться.
2.
This returns the content uri for the image captued by camera.
Это больше похоже на:This returns the content uri for the image to be captued by camera.
3. Что такое путь к файлу? Откуда вы это взяли? Как вы настроили ‘
file
?4. После захвата фотографии я сохраняю файл фотографии внутри /Android/data/<my-app-package-name> . После этого я пытаюсь получить uri содержимого из этого файла фотографии
5. Если у вас уже есть файл, вы не сможете впоследствии запросить uri в хранилище мультимедиа с помощью insert(), поскольку это создаст новый файл. Используйте FileProvider, если вам нужен uri схемы содержимого. Кроме того, хранилище мультимедиа хранит свои данные в каталоге вашего приложения.