Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Vista web de Android, inicie la actividad ACTION_VIEW cuando la URL no pueda ser manejada por webview

En realidad sé cómo iniciar la aplicación de mercado mediante el filtrado de URL con mi cliente personalizado de webview, pero quiero hacerlo más genérico, es decir, comprobar cada URL, no sólo la url del mercado, sino también algún otro protocolo de url que la webview No saber cómo tratar con él, y comenzar la intención de ACTION_VIEW para manejar eso.

Pensé que tal vez puedo comprobar si la url no se inicia con "http" "https" "ftp" "mailto", si la url está en estos protocolos, la webview puede manejar por sí mismo, para otros, voy a iniciar un nuevo Intento tratar de manejar eso.

¿Cual es tu idea? ¿Estoy en lo correcto? Cualquier protocolo faltante que webview podría manejar?

webView.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { if (url != null && url.contains("://") && url.toLowerCase().startsWith("market:")) { try { view.getContext().startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url))); return true; } catch (Exception ex) { } } view.loadUrl(url); return true; } }); 

  • Cómo cambiar la cara de la fuente de Webview en Android?
  • Cómo traer el campo enfocado en la vista usando iscroll y Android WebView
  • Solicitud de URL de visualización web de Android con cadena de consulta
  • Sherlock Acción invalidateOptionsMenu ()
  • WebView con cliente HTTP personalizado
  • Cómo deshabilitar el cuadro de diálogo "Guardar contraseña" en un WebView de Android?
  • Abrir vínculos externos en el navegador con la vista web de Android
  • Abrir URL en WebView en lugar del explorador predeterminado
  • One Solution collect form web for “Vista web de Android, inicie la actividad ACTION_VIEW cuando la URL no pueda ser manejada por webview”

    Un enfoque que podría intentar es echar un vistazo a PackageManager.queryIntentActivities(Intent, int) . Este método le da información para todas las actividades que pueden manejar una Intent dada. Usted podría simplemente crear una Intent y ver lo que devuelve. Si desea que su WebView tenga prioridad cuando pueda manejar la URL, puede manejar opcionalmente cualquier resultado que incluya la actividad del explorador. No he probado este código, pero podría parecer algo así:

     webView.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); List<ResolveInfo> infos = getPackageManager().queryIntentActivities(intent, 0); if (infos.size() == 0) { // apparently nothing can handle this URL return false; } for (ResolveInfo info : infos) { if (info.activityInfo.packageName.equals("com.android.browser")) { view.loadUrl(url); return true; } } startActivity(intent); return true; } }); 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.