Convertir cadena a Uri

¿Cómo puedo convertir una cadena a un Uri en Java (Android)? es decir:

String myUrl = "http://stackoverflow.com"; 

myUri = ???;

Puedes usar el método estático de parse de Uri

 Uri myUri = Uri.parse("http://stackoverflow.com") 

Solo estoy usando el paquete java.net . Aquí puedes hacer lo siguiente:

 String myUrl = "http://stackoverflow.com"; URI myURI = new URI(myUrl); 

Si está usando las extensiones Kotlin y Kotlin de Android, entonces hay una hermosa forma de hacerlo.

 val uri = myUriString.toUri() 

Para agregar extensiones de Kotlin ( KTX ) a su proyecto, agregue lo siguiente a build.gradle de su módulo de aplicación

  repositories { google() } dependencies { implementation 'androidx.core:core-ktx:1.0.0-rc01' } 

¿Qué vas a hacer con el URI?

Si solo vas a usarlo con un HttpGet por ejemplo, puedes usar la cadena directamente al crear la instancia de HttpGet.

 HttpGet get = new HttpGet("http://stackoverflow.com"); 

Puede analizar un String a un Uri usando Uri.parse () como se muestra a continuación:

 Uri myUri = Uri.parse("http://stackoverflow.com"); 

El siguiente es un ejemplo de cómo puede usar su Uri recién creado en un bash 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 patwigter. 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); } 

NB: Hay una diferencia entre Androids URI y Uri .

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