not - Cuál es la diferencia entre Java.Net.Uri y Android.Net.Uri
xamarin location (2)
La diferencia es que Android.Net.Uri
es la implementación propia de Google de RFC 2396.
Android.Net.Uri
es inmutable, por lo tanto, es seguro para subprocesos. Su implementación también es, según los comentarios en la fuente , más indulgente. Entonces, mientras que Java.Net.Uri
lanzaría una Exception
, intentaría usar un Uri basura, la implementación de Android simplemente le devolvería un Uri con esa basura.
Por lo que puedo decir, Android.Net.Uri
solo lanzará NullPointerException y aparentemente ninguna otra excepción. Si bien la implementación de Java.Net.Uri
arrojará otras excepciones como URISyntaxException
y IllegalArgumentException
De lo contrario, parecen muy similares.
El file:/sdcard/MyFolder/MyFile.txt
Uri que obtienes file:/sdcard/MyFolder/MyFile.txt
es válido, y cuando lo java.net.URI
través de java.net.URI
obtengo lo siguiente:
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"
Estoy tratando de obtener un Uri
de un objeto de file
así:
File file = new File("/sdcard/MyFolder/MyFile.txt");
var androidUri = Android.Net.Uri.FromFile(file).ToString();
var javaUri = file.ToURI().ToString();
esto devuelve los siguientes valores:
androidUri = "file:///sdcard/MyFolder/MyFile.txt"
javaUri = "file:/sdcard/MyFolder/MyFile.txt"
así que mi pregunta es cuál es la diferencia entre Java.Net.Uri
y Android.Net.Uri
Se supone que estos dos valores son diferentes? ¿Cuándo deberían ser utilizados?
Actualizar
Encontré las dos páginas de documentación Java.Net.Uri y Android.Net.Uri y ambas dicen:
Construye y analiza referencias URI que se ajustan a RFC 2396 .
Por lo tanto, seguramente esto es un error y deberían devolver la misma cadena?
Aquí hay una diferencia práctica:
java.net.uri admite direcciones IPv4 e IPv6, mientras que android.net.uri solo es compatible con IPv4 .