在 Android 中使用媒体选择器从 Uri 打开文件

问题描述 投票:0回答:1

我正在使用

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
这样的
File()
不存在,系统无法找到它。

我的问题是:如何将 Uri 视为文件?

imageUri.toFile()
使应用程序崩溃。

android google-cloud-storage
1个回答
0
投票

如何将 Uri 视为文件?

A

Uri
不必指向文件系统上的文件,更不用说您的应用程序可以直接访问文件系统的文件了。

您可以尝试使用

putFile()
,而不是使用
putStream()
。您可以使用
ContentResolver
 及其 
openInputStream()
 方法来获取可与 
InputStream
 一起使用的 
putStream()

© www.soinside.com 2019 - 2024. All rights reserved.