27

I am able to find how to convert android.net.Uri to Java.net.URI here but not vice-versa.

So after spending some time I figured it out. Here is the solution(If there is another solution then please post that as well)

First convert javaURI to string and then use android.net.Uri's parse function

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

3 Answers 3

34

http://developer.android.com/reference/android/net/Uri.html#parse(java.lang.String)

public static Uri parse (String uriString) 

Creates a Uri which parses the given encoded URI string.

Parameters
uriString: an RFC 2396-compliant, encoded URI

Returns
Uri for this given uri string

Throws
NullPointerException if uriString is null


Therefore, here is an example:

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

Goes without saying, use the real java.net.URI in it... ;)

Sign up to request clarification or add additional context in comments.

1 Comment

This also means you can run Unit Tests on the local JVM without worrying about the Android SDK being present therefore making life a lot easier.
4

For anyone coming across this, I had success with the following code:

URI oldUri; Uri newUri = new Uri.Builder().scheme(oldUri.getScheme()) .encodedAuthority(oldUri.getRawAuthority()) .encodedPath(oldUri.getRawPath()) .query(oldUri.getRawQuery()) .fragment(oldUri.getRawFragment()) .build(); 

Basically, get each URI component and pass it to the builder (as there does not seem to be a way to pass in a whole URI string.

5 Comments

310 characters vs 43 characters... - Uri newUri = Uri.parse(oldUri.toString()); - hmm...
Just brilliant @saleemrashid1
Why in the name of god would you do something like that?
Downvoted because android.net.Uri already have a parse method
Thank you for this solution. You may want to add a line to handle URIs that contain port numbers.
1
uri = Uri.parse(mFile.toString()); 

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.