Abrir el archivo adjunto en WebView

Tengo un archivo adjunto en WebView . Cuando toco en ella, no pasa nada. Yo sé cómo abrir el archivo adjunto en WebView, pero la solución está basada en la condición. ¿Hay alguna solución para abrirlo sin colocar condición porque hay número de extensiones adjunto es compatible con mi aplicación. No quiero que se descargue el archivo adjunto.
Esto es lo que estoy haciendo ahora y estas son sólo algunas de las extensiones:

 if ((url.contains(".pdf") || url.contains(".xml") || url.contains(".xlsx") || url.contains(".docx") || url.contains(".ppt"))) { url = org.apache.commons.lang3.StringUtils.join("http://docs.google.com/gview?embedded=true&url=", url); browser.loadUrl(url); } 

Lo que quieres es sólo parcial posible, y siempre necesitaría manejar excepciones. En la vista Web de Android, puede hacer lo siguiente con respecto al manejo de un enlace:

1: Configurando un webviewclient para interceptar cualquier url pulsada:

La configuración del cliente web le permite comprobar qué URL se hace clic y especificar una acción para cada url diferente.

 webview.setWebViewClient(new WebViewClient() { public boolean shouldOverrideUrlLoading(WebView view, String url){ // you can try to open the url, you can also handle special urls here view.loadUrl(url); return false; // do not handle by default action } }); 

Puedes hacer esto tan difícil como quieras, para manejar tipos de archivos muy específicos que realmente necesitan ser descargados primero, pero para descargarlos en segundo plano sin cargar el navegador externo puedes hacer algo como esto:

 @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { // handle different requests for different type of files // Download url when it is a music file if (url.endsWith(".mp3")) { Uri source = Uri.parse(url); DownloadManager.Request mp3req = new DownloadManager.Request(source); // appears the same in Notification bar while downloading mp3req.setDescription("Downloading mp3.."); mp3req.setTitle("song.mp3"); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { mp3req.allowScanningByMediaScanner(); mp3req.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED); } mp3req.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "song.mp3"); DownloadManager manager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE); manager.enqueue(mp3req); } else if(url.endsWith(".something")) { // do something else } //or just load the url in the web view else view.loadUrl(url); return true; } 

2: Interceptar cualquier archivo descargado:

También puede interceptar cuando se inicia una descarga utilizando este código. De esta forma, puede utilizar directamente el contenido descargado en su aplicación.

 mWebView.setDownloadListener(new DownloadListener() { public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype, long contentLength) { //do whatever you like with the file just being downloaded } }); 

Sin garantías, el manejo de excepciones es siempre necesario

Los tipos de contenido que pueden ser manejados por el WebView, dependen de la versión de WebView que se esté utilizando, en el momento actual, el WebView puede manejar sólo ciertos tipos. Para algunos tipos se necesitan permisos especiales o hardware acceleration para el vídeo html5 por ejemplo. Otro ejemplo de soporte: SVG no era compatible con Android 3.0. Y hay muchos otros muchos ejemplos donde el soporte para ciertos tipos se han implementado en las versiones recientes de WebView pero no existen para versiones anteriores.

Puede leer más sobre la implementación de WebView actual aquí: https://developer.chrome.com/multidevice/webview/overview

No hay tal cosa como un almuerzo gratis

  • ¿Cómo cambiar el título de un AlertDialog.Builder después de que se muestre?
  • ¿Existe una alternativa a NestedScrollView para su uso con un WebView?
  • Android: el método de WebView goBack () muestra una página en blanco
  • Cómo cargar URL en Android Web View si HTTP o HTTPS no se incluyen en la URL dada
  • ¿Por qué no Webview de Android verifica la caché por defecto?
  • Cómo borrar las cookies y caché de la vista web en Android cuando no está en la vista web?
  • Comprobar si la cadena es persa o inglesa
  • Androide WebView - contenido no editable
  • Captura de pantalla programática de una webview con elementos flash
  • ¿Cómo puede un WebView heredar colores del tema actual de Android?
  • WebView en el cuadro de diálogo
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.