ver samsung puedo porque navegador historial externos enlaces desactivar como chrome celular aplicaciones abrir abre android browser webview hyperlink external

samsung - no puedo abrir enlaces whatsapp android



Abrir enlaces externos en el navegador con vista web de android (4)

A continuación tengo una solución muy simple.

Por ejemplo, para cargar facebook.com en la vista web y todas las otras URL en el navegador->

- Configurar onCreate

webView.loadUrl("http://m.facebook.com"); webView.setWebViewClient(new MyAppWebViewClient());

Haz una clase interna ...

public class MyAppWebViewClient extiende WebViewClient {

// handling external links as intents @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { if( Uri.parse(url).getHost().endsWith("facebook.com") ) { return false; } Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); view.getContext().startActivity(intent); return true; }

}

Tengo este código, pero no porque funcione, se sigue abriendo en la vista web y lo que quiero es que los enlaces que no pertenecen a mi sitio web se abran en su navegador predeterminado. ¿Alguna idea? Gracias

private class CustomWebViewClient extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { if(url.contains("message2space.es.vu")){ view.loadUrl(url); return true; }else{ return super.shouldOverrideUrlLoading(view, url); } } }


Aquí hay una solución muy dulce y corta

@Override public boolean shouldOverrideUrlLoading(WebView view, String url) { Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); context.startActivity(i); return true; }


Dado que el nivel 24 de API shouldOverrideUrlLoading(WebView view, String url) está en desuso.

Solución actualizada:

webView.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { Intent intent = new Intent(Intent.ACTION_VIEW, request.getUrl()); view.getContext().startActivity(intent); return true; } });


El problema es que debe enviar una Intención al navegador web predeterminado para abrir el enlace. Lo que está haciendo es simplemente llamar a un método diferente en su vista web para manejar el enlace. Siempre que desee que otra aplicación maneje algo, debe usar Intents. Pruebe este código en su lugar.

private class CustomWebViewClient extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { if(url.contains("message2space.es.vu")) { view.loadUrl(url); } else { Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); startActivity(i); } return true; } }