Android: abra los vínculos _blank de destino en WebView con un navegador externo

Construyo un WebView que muestra un sitio web. El sitio web contiene enlaces sin un atributo target="_blank" y algunos con él.

Necesito abrir los vínculos con el target definido en el navegador de dispositivo estándar externo y los que no están dentro de WebView.

Estoy utilizando un WebViewClient y he probado con esta función, pero todavía todos mis enlaces se abren en el WebView :

Alternativa 1:

 @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { return super.shouldOverrideUrlLoading(view, url); } 

Alternativa 2:

 @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } 

¿Alguien sabe cómo puedo abrir vínculos en blanco externamente?

¡Gracias!

PS: Para evitar malentendidos: No puedo usar este enfoque porque la única manera de saber que el enlace debe abrirse externallly es el atributo de target .

Después de visitar los enlaces anteriores, he llegado con este código y espero que esto ayude.

 wv.getSettings().setSupportMultipleWindows(true); wv.setWebChromeClient(new WebChromeClient() { @Override public boolean onCreateWindow(WebView view, boolean dialog, boolean userGesture, android.os.Message resultMsg) { WebView.HitTestResult result = view.getHitTestResult(); String data = result.getExtra(); Context context = view.getContext(); Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(data)); context.startActivity(browserIntent); return false; } }); 

Me enfrenté al mismo problema. Quería abrir mis páginas de sitios web dentro de la aplicación y descansar todas las páginas deben estar abiertas en el Navegador por defecto. Utilicé una técnica. Si URL contiene el nombre de mi sitio web, lo abrí en WebView y reposo todos los sitios web abiertos en el navegador predeterminado.

Encontrar abajo el código, espero que sería útil para todos los que se enfrentan a tales problemas.

 private class MyBrowser extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { if (url.contains("/internetgeeks")) { browser.loadUrl(url); return false; } else { Intent intent = new Intent(Intent.ACTION_VIEW); intent.setData(Uri.parse(url)); startActivity(intent); return true; } } } 

También tengo el mismo problema y ahora he encontrado la solución.

También necesitas usar WebChromeClient. Puedes ver esto y esto . Y puede configurar un WebViewClient para el nuevo WebView y reemplazar el método shouldOverrideUrlLoading, entonces puede obtener la URL y hacer lo que quiera aquí. Si no configura WebViewClient, creo que debería funcionar también. En mi caso, quiero obtener la url para que establezca un WebViewClient a la nueva WebView.

Por cierto, si quitas la vista previa de la web y cuando regresas del navegador, la vista web está en blanco. Así que mantuve la webview y agregó una nueva, pero establecer la visibilidad de "ido".

  • Deshabilitar Android WebView / WebViewClient Iniciado favicon.ico Solicitar
  • Controlador de protocolo WebView de Android
  • Vista Web de Android
  • WebView Crash por java.io.IOException: cerrar error: EIO (error de E / S) libcore.io.IoUtils.close (IoUtils.java:41)
  • Proguard warning biblioteca clase android.webkit.WebView depende de la clase del programa android.webkit.WebViewClien
  • Cómo buscar Android ViewFlipper Ejemplo con varias WebViews
  • Habilitación de JavaScript general en WebViewClient
  • Android WebView para Facebook como botón
  • Vista web de Android lanza navegador cuando llama a loadurl
  • ¿Cuál es la diferencia entre setWebViewClient y setWebChromeClient?
  • SaveState de Webview no maneja WebViewClient personalizado
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.