Arulx La respuesta de Z fue exactamente lo que estaba buscando.
Estoy escribiendo una aplicación con Navigation Drawer con recyclerview y webviews, para mantener la navegación web dentro de la aplicación independientemente de los hipervínculos en los que se haga clic (sin iniciar el navegador web externo). Para ello será suficiente para poner las siguientes líneas de código 2:
mWebView.setWebChromeClient(new WebChromeClient()); mWebView.setWebViewClient(new WebViewClient());
exactamente debajo de su estado de vista Web.
Aquí está un ejemplo de mi código implementado WebView:
public class WebView1 extends AppCompatActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
WebView wv = (WebView) findViewById(R.id.wv1); //webview statement
wv.setWebViewClient(new WebViewClient()); //the lines of code added
wv.setWebChromeClient(new WebChromeClient()); //same as above
wv.loadUrl("http://www.google.com");
}}
esta manera, todos los eslabones hace clic en la página web se carga dentro de su vista Web. (El uso de Android 1.2.2 Estudio con todo el SDK actualizado)
Parece que este es el comportamiento por defecto para 'WebViewClient' y no necesita de subclases si esto es todo lo que está haciendo. Lo hice funcionar simplemente haciendo 'myWebView.setWebViewClient (new WebViewClient());' – Adam
@ dave-webb por favor actualice la muestra para no llamar a loadUrl. Todos los que lean esto: no repliquen el código (devuelven falso de la devolución de llamada en lugar de llamar a view.loadUrl). Llamar a loadUrl introduce un error sutil donde si tienes cualquier iframe dentro de la página con un esquema personalizado URL (digamos ) navegará el cuadro principal de tu aplicación a esa URL que probablemente sea la que rompa la aplicación un efecto secundario. –
@Adam ++ - sí, me di cuenta de esto también: no podía entender por qué una de mis vistas web NO estaba usando el navegador del sistema, y era porque había agregado un nuevo cliente web que solo estaba anulando OTRO método. Eso me tomó un tiempo para depurar. –