¿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.