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;
}
}