[英]Get path from URI throws exception
我有一个正在开发的 Android 应用程序,现在我正在尝试从 URI 获取文件(我将使用意图从图库中获取图像,然后使用 Ion 将其上传到 node.js 服务器) . 问题是它总是抛出异常。 我尝试调试并得到了 Uri.toString()。 它看起来像这样:
content://com.android.providers.media.documents/document/image%3A102
我知道它应该是这样的:
content://com.android.providers.media.documents/document/image:102
我知道 %3A 是 : 的表示,但为什么它会出现在 Uri 中,我该如何修复它? 最后,我怎样才能从这个 Uri 中获取我的文件?
我正在尝试从 URI 中获取文件
Uri
不是文件。 Uri
不必指向文件系统上的任何内容,更不用说您可以访问的地方了。
但为什么它会出现在 Uri 中
Uri
是一个不透明的句柄。 它可以是ContentProvider
想要的任何东西。
我该如何解决?
你不会,就像你“修复” https://stackoverflow.com/questions/41795342/get-path-from-uri-throws-exception
因为你不喜欢以4
开头的八位数字。 正如 Stack Overflow Web 服务器定义它使用的 URL 一样, ContentProvider
定义它使用的Uri
值。
最后,我怎样才能从这个 Uri 中获取我的文件?
理想情况下,你不会。 您使用ContentResolver
和openInputStream()
在该Uri
标识的内容上获取InputStream
,Ion 使用它。
如果 Ion 不支持此功能并且只能处理文件,请使用InputStream
将字节复制到您控制的某个FileOutputStream
(例如,在getCacheDir()
)。 使用该文件进行上传,然后在完成后删除该文件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.