将java.net.URI转换为android.net.URI

将java.net.URI转换为android.net.URI,android,uri,Android,Uri,我能够找到如何将android.net.Uri转换为Java.net.Uri,但不能反过来 所以在花了一段时间后,我明白了。这是解决方案(如果还有其他解决方案,请也发布) 首先将javaURI转换为字符串,然后使用android.net.Uri的解析函数 android.net.URI androidUri = android.net.Uri.parse(javaURI.toString()); 对于任何遇到此问题的人,我成功地使用了以下代码: URI oldUri; Uri newUri

我能够找到如何将android.net.Uri转换为Java.net.Uri,但不能反过来

所以在花了一段时间后,我明白了。这是解决方案(如果还有其他解决方案,请也发布)

首先将javaURI转换为字符串,然后使用android.net.Uri的解析函数

android.net.URI androidUri = android.net.Uri.parse(javaURI.toString());

对于任何遇到此问题的人,我成功地使用了以下代码:

URI oldUri;
Uri newUri  = new Uri.Builder().scheme(oldUri.getScheme())
                    .encodedAuthority(oldUri.getRawAuthority())
                    .encodedPath(oldUri.getRawPath())
                    .query(oldUri.getRawQuery())
                    .fragment(oldUri.getRawFragment())
                    .build();
基本上,获取每个URI组件并将其传递给构建器(因为似乎没有一种方法可以传递整个URI字符串。

创建一个Uri,该Uri解析给定的编码Uri字符串

参数
URI字符串:符合RFC2396的编码URI

返回值
此给定Uri字符串的Uri

抛出
如果uriString为null,则为NullPointerException


因此,这里有一个例子:

android.net.Uri.parse(new java.net.URI("").toString());

不用说,在它里面使用真正的
java.net.URI

310个字符对43个字符…-
urinewuri=Uri.parse(oldUri.toString())
-hmm…Just brilliant@saleemrashid1凭上帝之名,你为什么要这样做?投票被否决,因为android.net.Uri已经有了一个解析方法。这可能是重复的,这也意味着你可以在本地JVM上运行单元测试,而不用担心android SDK的存在,因此生活变得更加轻松。
android.net.Uri.parse(new java.net.URI("").toString());
uri = Uri.parse(mFile.toString());