¿Cómo puedo convertir una cadena a un Uri en Java (Android)? es decir .:Convertir cadena a Uri
String myUrl = "http://stackoverflow.com";
myUri = ???;
¿Cómo puedo convertir una cadena a un Uri en Java (Android)? es decir .:Convertir cadena a Uri
String myUrl = "http://stackoverflow.com";
myUri = ???;
Puede utilizar el método estático de parse
Uri
Uri myUri = Uri.parse("http://stackoverflow.com")
¿Qué vas a hacer con el URI?
Si va a utilizarlo con un HttpGet por ejemplo, puede usar la cadena directamente al crear la instancia de HttpGet.
HttpGet get = new HttpGet("http://stackoverflow.com");
Pero, por ejemplo, 'android.widget.ImageView.setImageURI' no lo hará, por lo que es una pregunta perfectamente válida. – Martin
en realidad esto no responde la pregunta –
sólo estoy usando el paquete java.net
. Aquí puede hacer lo siguiente:
String myUrl = "http://stackoverflow.com";
URI myURI = new URI(myUrl);
puede analizar una cadena a un URI utilizando Uri.parse() como se muestra a continuación:
Uri myUri = Uri.parse("http://stackoverflow.com");
El siguiente es un ejemplo de cómo se puede utilizar su Uri recién creado en un intento implícito. Para ser visto en un navegador en el teléfono de los usuarios.
// Creates a new Implicit Intent, passing in our Uri as the second paramater.
Intent webIntent = new Intent(Intent.ACTION_VIEW, myUri);
// Checks to see if there is an Activity capable of handling the intent
if (webIntent.resolveActivity(getPackageManager()) != null){
startActivity(webIntent);
}
El analizador de Java en java.net.URI
va a fallar si el URI no está completamente codificado según sus estándares. Por ejemplo, intente analizar: http://www.google.com/search?q=cat|dog
. Se lanzará una excepción para la barra vertical.
urllib hace que sea fácil convertir una cadena a java.net.URI
. Preprocesará y escapará de la URL.
assertEquals("http://www.google.com/search?q=cat%7Cdog",
Urls.createURI("http://www.google.com/search?q=cat|dog").toString());
Si está utilizando Kotlin y Kotlin extensiones androide, entonces no es una hermosa manera de hacer esto.
val uri = myUriString.toUri()
Para añadir extensiones Kotlin (KTX) a su proyecto añada lo siguiente a build.gradle de su módulo de aplicación
repositories {
google()
}
dependencies {
implementation 'androidx.core:core-ktx:0.1'
}
He tratado de esta solución, pero tengo un problema con él. Primero Uri necesita ser cambiado a URI (si es del paquete java.net). En segundo lugar, no tiene el constructor "analizar". ¿Tienes alguna idea de lo que estoy haciendo mal? –
Hay una clase 'Uri' con un método' parse' http://developer.android.com/reference/android/net/Uri.html. También hay una clase 'URI' http://developer.android.com/reference/java/net/URI.html sin un método' parse'. Entonces la clase correcta para usar es 'Uri'. Asegúrese de tener la importación correcta – ccheneson
@ccheneson ¿Por qué Uri debería ser más correcto que URI? Con URI puedes usar el método 'create'.Es tan simple de usar como Uri. Entonces, ¿qué beneficio tienes de Uri? – kaba713