Mayank Rana
Mayank Rana

Reputation: 281

Convert java.net.URI to android.net.Uri

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());

Upvotes: 26

Views: 19864

Answers (3)

sivi
sivi

Reputation: 11114

uri = Uri.parse(mFile.toString());

Upvotes: 1

user1974640
user1974640

Reputation:

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... ;)

Upvotes: 33

user1837158
user1837158

Reputation:

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.

Upvotes: 4

Related Questions