当前位置:  开发笔记 > 编程语言 > 正文

Android-如何将android.net.Uri对象转换为java.net.URI对象?

如何解决《Android-如何将android.net.Uri对象转换为java.net.URI对象?》经验,为你挑选了2个好方法。

我试图FileInputStream在用户从图片库中选择的图像上获取一个对象.这是由URI返回的androidandroid.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI

内容://媒体/外部/图像/媒体/ 3

当我尝试从这个对象构造一个java URI对象时,我得到一个IllegalArgumentException,其中包含URI中的异常描述Expected file scheme:content:// media/external/images/media/3而android URI将该方案显示为内容

从未找到原始问题的解决方案.但是如果你想要图片库中图像的字节流,这段代码就可以做到.

content://media/external/images/media/3

Brian Gianfo.. 52

您可以结合Java 的基础构造函数使用toStringandroid 的方法.UriStringURI

android.net.Uri auri = new android.net.Uri(what ever);
java.net.URI juri = new java.net.URI(auri.toString());

Android URI | Java URI



1> Brian Gianfo..:

您可以结合Java 的基础构造函数使用toStringandroid 的方法.UriStringURI

android.net.Uri auri = new android.net.Uri(what ever);
java.net.URI juri = new java.net.URI(auri.toString());

Android URI | Java URI


这是错误的,如果URI包含需要编码的字符(如空格),则会失败.android.net.Uri.toString()解码编码字符,如果你尝试在非编码字符串上构造它,java.net.URI将抛出异常.正确的解决方案`huri = new java.net.URI(URLEncoder.encode(auri.toString(),"UTF-8"));`
谢谢.试过了.它给出了一个异常(java.net.URI应该有一个有效的方案)
@RémyDAVID它没有.我试过了.对于带有空格的`anUri`,空间不会被*编码.亲自尝试:`Uri.parse("content://foo.bar.com/0?file = my goodness").toString()`.你是正确的,javadocs说它返回一个编码的字符串,但它没有说明使用了什么样的编码.

2> Fedor..:

找到从内容URI打开InputStream的正确方法:

InputStream fileInputStream=yourContext.getContentResolver().openInputStream(uri);

就这样!


谢谢!!!这么简单,我知道它在某处.接受的答案可能在某些情况下有效,但在所有情况下似乎都不安全/有效.
推荐阅读
wurtjq
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有