¿Cómo puedo abrir una URL en el navegador web de Android desde mi aplicación?

Resuelto Arutha asked hace 54 años • 43 respuestas

¿Cómo abrir una URL desde el código en el navegador web integrado en lugar de dentro de mi aplicación?

Probé esto:

try {
    Intent myIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(download_link));
    startActivity(myIntent);
} catch (ActivityNotFoundException e) {
    Toast.makeText(this, "No application can handle this request."
        + " Please install a webbrowser",  Toast.LENGTH_LONG).show();
    e.printStackTrace();
}

pero obtuve una excepción:

No activity found to handle Intent{action=android.intent.action.VIEW data =www.google.com
Arutha avatar Jan 01 '70 08:01 Arutha
Aceptado

Prueba esto:

Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.google.com"));
startActivity(browserIntent);

Eso funciona bien para mí.

En cuanto al "http://" que falta, simplemente haría algo como esto:

if (!url.startsWith("http://") && !url.startsWith("https://"))
   url = "http://" + url;

Probablemente también rellenaría previamente su EditText en el que el usuario está escribiendo una URL con "http://".



En Kotlin:

if (!url.startsWith("http://") && !url.startsWith("https://")) {
    url = "http://$url"
}

val browserIntent = Intent(Intent.ACTION_VIEW, Uri.parse(url))
startActivity(browserIntent)
Mark B avatar Feb 04 '2010 18:02 Mark B

Una forma común de lograr esto es con el siguiente código:

String url = "http://www.stackoverflow.com";
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url)); 
startActivity(i); 

eso podría cambiarse a una versión de código corto...

Intent intent = new Intent(Intent.ACTION_VIEW).setData(Uri.parse("http://www.stackoverflow.com"));      
startActivity(intent); 

o :

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.stackoverflow.com")); 
startActivity(intent);

¡el más corto! :

startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.stackoverflow.com")));
Jorgesys avatar May 27 '2014 14:05 Jorgesys

Respuesta sencilla

Puedes ver la muestra oficial de Android Developer .

/**
 * Open a web page of a specified URL
 *
 * @param url URL to open
 */
public void openWebPage(String url) {
    Uri webpage = Uri.parse(url);
    Intent intent = new Intent(Intent.ACTION_VIEW, webpage);
    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivity(intent);
    }
}

Cómo funciona

Eche un vistazo al constructor de Intent:

public Intent (String action, Uri uri)

Puede pasar android.net.Urila instancia al segundo parámetro y se crea una nueva intención basada en la URL de datos proporcionada.

Y luego, simplemente llame startActivity(Intent intent)para iniciar una nueva Actividad, que se incluye con el Intent con la URL proporcionada.

¿ Necesito el ifestado de cuenta del cheque?

Sí. Los documentos dicen:

Si no hay aplicaciones en el dispositivo que puedan recibir la intención implícita, su aplicación fallará cuando llame a startActivity(). Para verificar primero que existe una aplicación para recibir la intención, llame a resolveActivity() en su objeto Intent. Si el resultado no es nulo, hay al menos una aplicación que puede manejar la intención y es seguro llamar a startActivity(). Si el resultado es nulo, no debe utilizar la intención y, si es posible, debe deshabilitar la función que invoca la intención.

Prima

Puede escribir en una línea al crear la instancia de Intent como se muestra a continuación:

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
kenju avatar Aug 24 '2015 05:08 kenju