Intereting Posts
Проблема с переходом на страницу PDF Разрешения на размещение в Marshmallow FINE и COARSE Совместное использование общих файловых дескрипторов файлов в приложении и процессах Android с использованием связующего Просмотр кеширования для верхних и нижних колонтитулов в виде списка Является ли какая-нибудь функция быстрой, похожей на R.java в Android? Смартфон акселерометр жесты algorightms Ошибка получения родительского элемента: не найден ресурс, который соответствует указанному имени '@android: style / TextAppearance.Holo.Widget.ActionBar.Title' Renderer over Camera Посмотреть как на одном GLSurfaceView? Как сделать аннотацию, как подсветку, зачеркивание, подчеркивание, рисование, добавление текста и т. Д. В андроид для просмотра PDF? Что такое aapt (Android Asset Packaging Tool) и как это работает? Android File Picker Проблемы с Android с eclipse Почему разрешение на GCM не предоставляется на Android 6? Android studio AssertionError: не вызывать waitForSmartMode изнутри действия чтения в немой версии Включить / отключить подключение к данным в программном обеспечении Android

В чем разница между Java.Net.Uri и Android.Net.Uri

Я пытаюсь получить Uri из file объекта следующим образом:

 File file = new File("/sdcard/MyFolder/MyFile.txt"); var androidUri = Android.Net.Uri.FromFile(file).ToString(); var javaUri = file.ToURI().ToString(); 

Это возвращает следующие значения:

 androidUri = "file:///sdcard/MyFolder/MyFile.txt" javaUri = "file:/sdcard/MyFolder/MyFile.txt" 

Поэтому мой вопрос заключается в том, Java.Net.Uri разница между Java.Net.Uri и Android.Net.Uri – эти два значения должны быть разными? Когда они должны использоваться?

Обновить

Я нашел две страницы документации Java.Net.Uri и Android.Net.Uri, и оба говорят:

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

Поэтому, конечно, это ошибка, и они должны возвращать одну и ту же строку?

Разница в том, что Android.Net.Uri является собственной реализацией Google RFC 2396.

Android.Net.Uri является неизменным, поэтому он является потокобезопасным. Их реализация также, согласно комментариям в источнике , более прощает. Поэтому, в то время как Java.Net.Uri выбрасывает Exception вы Java.Net.Uri использовать мусор Uri, реализация Android просто вернет вам Uri с этим мусором.

Насколько я могу судить, Android.Net.Uri будет генерировать исключение NullPointerException и, по-видимому, никаких других исключений. Хотя реализация Java.Net.Uri будет Java.Net.Uri другие исключения, такие как URISyntaxException и IllegalArgumentException

В противном случае они кажутся очень похожими.

Ури вы получаете file:/sdcard/MyFolder/MyFile.txt действителен, а при метании через java.net.URI я получаю следующее:

 java> String uri = "file:/sdcard/MyFolder/MyFile.txt"; java> import java.net.* java> URI urr = new URI(uri); java.net.URI urr = file:/sdcard/MyFolder/MyFile.txt java> urr.getScheme(); java.lang.String res2 = "file" java> urr.getPath(); java.lang.String res3 = "/sdcard/MyFolder/MyFile.txt" 

Вот одно практическое различие:

Java.net.uri поддерживает адреса IPv4 и IPv6, тогда как android.net.uri поддерживает только IPv4 .