Конвертировать java.net.URI в android.net.Uri

Я могу найти, как конвертировать android.net.Uri в Java.net.URI здесь, но не наоборот.

Поэтому, проведя некоторое время, я понял это. Вот решение (если есть другое решение, то, пожалуйста, опубликуйте это также)

Сначала преобразуйте javaURI в строку, а затем используйте функцию синтаксиса android.net.Uri

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

Ответ 1

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

public static Uri parse (String uriString)

Создает Uri, который анализирует данную кодированную строку URI.

Параметры
uriString: совместимый с RFC 2396, кодированный URI

Возвращает
Uri для этой заданной строки uri

Выдает
NullPointerException, если uriString имеет значение null


Следовательно, вот пример:

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

Понятно, что в нем используется реальный java.net.URI... ;)

Ответ 2

Для всех, кто сталкивался с этим, у меня был успех со следующим кодом:

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.

Ответ 3

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