Al hacer clic en las URL se abre el navegador predeterminado
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?
Si está utilizando un, WebView
tendrá que interceptar los clics usted mismo si no desea el comportamiento predeterminado de Android.
Puede monitorear eventos en un WebView
usando 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 WebViewClient
método deWebView
uso .setWebViewClient()
Si observa el WebView
ejemplo 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;
}
}
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);
}
}
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());