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


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

Intenté 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 tengo una excepción:

No activity found to handle Intent{action=android.intent.action.VIEW data =www.google.com

1073
2018-02-04 17:51


origen


Respuestas:


Prueba esto:

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

Eso funciona bien para mí.

En cuanto a la falta de "http: //", simplemente haría algo como esto:

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

Probablemente también pre-llenaré tu EditText con el que el usuario está escribiendo una URL con "http: //".


2036
2018-02-04 18:01



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

feliz codificación!


60
2018-05-27 14:20



En 2.3, tuve mejor suerte con

final Intent intent = new Intent(Intent.ACTION_VIEW).setData(Uri.parse(url));
activity.startActivity(intent);

La diferencia es el uso de Intent.ACTION_VIEW en lugar de la cadena "android.intent.action.VIEW"


47
2018-03-16 15:35



Respuesta simple

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

Por favor, eche un vistazo al constructor de Intent:

public Intent (String action, Uri uri)

Puedes pasar android.net.Uri instancia al segundo parámetro, y se crea un nuevo Intent basado en la url de datos dada.

Y luego, simplemente llama startActivity(Intent intent) para comenzar una nueva actividad, que se incluye con la intención de la URL dada.

¿Necesito el if declaración de verificación?

Sí. los documentos dice:

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

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

36
2017-08-24 05:06



Prueba esto:

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

o si desea que el navegador web abra en su actividad, haga lo siguiente:

WebView webView = (WebView) findViewById(R.id.webView1);
WebSettings settings = webview.getSettings();
settings.setJavaScriptEnabled(true);
webView.loadUrl(URL);

y si desea utilizar el control de zoom en su navegador, puede usar:

settings.setSupportZoom(true);
settings.setBuiltInZoomControls(true);

24
2017-08-31 10:10



Si desea mostrarle al usuario un diálogo con toda la lista de navegadores, para que pueda elegir el preferido, aquí hay un código de muestra:

private static final String HTTPS = "https://";
private static final String HTTP = "http://";

public static void openBrowser(final Context context, String url) {

     if (!url.startsWith(HTTP) && !url.startsWith(HTTPS)) {
            url = HTTP + url;
     }

     Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
     context.startActivity(Intent.createChooser(intent, "Choose browser"));// Choose browser is arbitrary :)

}

20
2018-01-09 08:55



Al igual que las soluciones que otros han escrito (que funcionan bien), me gustaría responder lo mismo, pero con un consejo que creo que la mayoría preferiría usar.

En caso de que desee que la aplicación empiece a abrir en una nueva tarea, independiente de su cuenta, en lugar de permanecer en la misma pila, puede usar este código:

final Intent intent=new Intent(Intent.ACTION_VIEW,Uri.parse(url));
intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY|Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
startActivity(intent);

15
2018-04-08 09:19



otra opción en Cargar URL en la misma aplicación usando Webview

webView = (WebView) findViewById(R.id.webView1);
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl("http://www.google.com");

14
2018-06-25 08:01