繁体   English   中英

从 URI 获取路径抛出异常

[英]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 中获取我的文件?

理想情况下,你不会。 您使用ContentResolveropenInputStream()在该Uri标识的内容上获取InputStream ,Ion 使用它。

如果 Ion 不支持此功能并且只能处理文件,请使用InputStream将字节复制到您控制的某个FileOutputStream (例如,在getCacheDir() )。 使用该文件进行上传,然后在完成后删除该文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM