Открыть файл из Uri с помощью средства выбора мультимедиа в Android

Я использую rememberLauncherForActivityResult, чтобы получить изображение, как Uri, используя Modifier.clickable { launcher.launch("image/*") }.

Следуя https://firebase.google.com/docs/storage/android/upload-files#upload_from_a_local_file, я делаю эквивалент:

val file = Uri.fromFile(File(imagePath))
val uploadTask = eventImageRef.putFile(file)

где imagePath эквивалентно imageUri.path, где imageUri — это просто Uri, полученное из rememberLauncherForActivityResult, связанного с изображением, которое пользователь выбирает с помощью средства выбора мультимедиа.

Однако при попытке загрузки выдается ENOENT:

Caused by: java.io.FileNotFoundException: /picker_get_content/0/com.android.providers.media.photopicker/media/1000006961: open failed: ENOENT (No such file or directory)

действительно, Uri as File() не существует, и система не может его найти.

Мой вопрос: как я могу рассматривать Uri как файл? imageUri.toFile() вылетает приложение.

0
0
58
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

как я могу рассматривать Uri как файл?

Uri не обязательно должен указывать на файл в файловой системе, не говоря уже о том, к которому ваше приложение имеет прямой доступ к файловой системе.

Вместо использования putFile() вы можете попробовать использовать putStream(). Вы можете использовать ContentResolver и его метод openInputStream(), чтобы получить InputStream, который можно использовать с putStream().

Другие вопросы по теме