Al hacer clic en las URL se abre el navegador predeterminado

Resuelto JaVadid asked hace 54 años • 6 respuestas

He cargado una URL externa en mi WebView. Ahora lo que necesito es que cuando el usuario haga clic en los enlaces de la página cargada, tenga que funcionar como un navegador normal y abrir el enlace en el mismo WebView. ¿Pero abre el navegador predeterminado y carga la página allí?

He habilitado JavaScript. Pero todavía no funciona. ¿Me he olvidado algo?

JaVadid avatar Jan 01 '70 08:01 JaVadid
Aceptado

Si está utilizando un, WebViewtendrá que interceptar los clics usted mismo si no desea el comportamiento predeterminado de Android.

Puede monitorear eventos en un WebViewusando un archivo WebViewClient. El método que quieres es shouldOverrideUrlLoading(). Esto le permite realizar su propia acción cuando se selecciona una URL en particular.

Usted establece el WebViewClientmétodo deWebView uso .setWebViewClient()

Si observa el WebViewejemplo en el SDK, encontrará un ejemplo que hace exactamente lo que desea. Es tan simple como:

private class HelloWebViewClient extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        return true;
    }
}
David Webb avatar Mar 04 '2010 12:03 David Webb

en algunos casos, es posible que necesites anular onLoadResource si obtienes una redirección que no activa el método de carga de URL. en este caso probé lo siguiente:

@Override
public void onLoadResource(WebView view, String url)
{
    if (url.equals("http://redirectexample.com"))
    {
        //do your own thing here
    }
    else
    {
        super.onLoadResource(view, url);
    }           
}
realgt avatar Apr 22 '2010 14:04 realgt

La documentación oficial dice que, al hacer clic en un enlace en un WebView, se iniciará una aplicación que maneja las URL. Debes anular este comportamiento predeterminado.

    myWebView.setWebViewClient(new WebViewClient() {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            return false;
        }
    });

o si no hay lógica condicional en el método simplemente haga esto

myWebView.setWebViewClient(new WebViewClient());
abbas avatar Sep 20 '2013 16:09 abbas