He cargado una URL externa en mi WebView
. Ahora, lo que necesito es que cuando el usuario hace clic en los enlaces de la página cargada, tiene que funcionar como un navegador normal y abrir el enlace en el mismo WebView
. ¿Pero está abriendo el navegador predeterminado y cargando la página allí?
He habilitado JavaScript. Pero aún así no está funcionando. ¿He olvidado algo?
WebViewClient
y no necesita subclases si esto es todo lo que está haciendo. Conseguí que esto funcionara solo haciendomyWebView.setWebViewClient(new WebViewClient());
en algunos casos, es posible que necesite anular onLoadResource si obtiene una redirección que no activa el método de carga de URL. en este caso probé lo siguiente:
fuente
La documentación oficial dice que, haga clic en un enlace en un WebView iniciará la aplicación que maneja las URL. Debe anular este comportamiento predeterminado
o si no hay una lógica condicional en el método, simplemente haga esto
fuente
Agregue estas 2 líneas en su código:
fuente
El método
boolean shouldOverrideUrlLoading(WebView view, String url)
quedó en desuso en la API 24. Si admite nuevos dispositivos, debe usarlosboolean shouldOverrideUrlLoading (WebView view, WebResourceRequest request)
.Puede usar ambos haciendo algo como esto:
fuente
La respuesta de Arulx Z fue exactamente lo que estaba buscando.
Estoy escribiendo una aplicación con Navigation Drawer con vista de reciclaje y vistas web, para mantener la navegación web dentro de la aplicación, independientemente de los hipervínculos en los que se haga clic (por lo tanto, no se inicia el navegador web externo). Para eso será suficiente poner las siguientes 2 líneas de código:
mWebView.setWebChromeClient(new WebChromeClient()); mWebView.setWebViewClient(new WebViewClient());
exactamente debajo de su declaración de WebView.
Aquí hay un ejemplo de mi código WebView implementado:
de esta manera, cada enlace que se haga clic en el sitio web se cargará dentro de su WebView. (Usando Android Studio 1.2.2 con todos los SDK actualizados)
fuente