android webview android-browser external-links internal-link

¿Cómo abrir una URL externa en el navegador predeterminado y todos los enlaces internos en WebView Android?



android-browser external-links (1)

Estoy usando WebView en mi página y usando assets archivos locales para mostrar en WebView pero en la página HTML principal sitio web externo (no local) y quiero abrir solo ese enlace en el navegador predeterminado en el dispositivo de los usuarios

Este es mi código en el método ''onCreate''

WebView v; v=(WebView) rootView.findViewById(R.id.webView1); v.getSettings().setJavaScriptEnabled(true); WebViewClient vc= new WebViewClient(); v.setWebViewClient(vc); v.loadUrl("file:///android_asset/home.html");

Cuando ejecuto la aplicación, el enlace interno funciona bien, pero el enlace externo "www.apple.com" está en la vista web

Busqué la misma pregunta y encontré esta solución, pero aún se abre un enlace externo en WebView

WebView webView = (WebView) rootView.findViewById(R.id.webView1); webView.setWebViewClient(new MyWebViewClient()); String url = "file:///android_asset/home.html"; webView.getSettings().setJavaScriptEnabled(true); webView.loadUrl(url);

y clase

class MyWebViewClient extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { if(url.contains("http")){ // Could be cleverer and use a regex return super.shouldOverrideUrlLoading(view, url); // Leave webview and use browser } else { view.loadUrl(url); // Stay within this webview and load url return true; } } }


Cambio

if (url.contains("http")) { // Could be cleverer and use a regex return super.shouldOverrideUrlLoading(view, url); // Leave webview and use browser } else { view.loadUrl(url); // Stay within this webview and load url return true; }

a

if (url.contains("http")) { // Could be cleverer and use a regex Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); mContext.startActivity(intent); return true; } return false;

Nota: reemplace mContext con su contexto de actividad.