Abrir PDF en una WebView

Quiero abrir un PDF en mi WebView, y encontré y combiné códigos en este foro.

Pero detecta la “aplicación No PDF encontrada”, aunque tengo varias aplicaciones PDF instaladas, incluido Adobe Reader.

Aquí el código:

private class PsvWebViewClient extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); if (url.contains(".pdf")) { Uri path = Uri.parse(url); Intent pdfIntent = new Intent(Intent.ACTION_VIEW); pdfIntent.setDataAndType(path, "application/pdf"); pdfIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); try { startActivity(pdfIntent); } catch(ActivityNotFoundException e) { Toast.makeText(PsvWebViewActivity.this, "No PDF application found", Toast.LENGTH_SHORT).show(); } catch(Exception otherException) { Toast.makeText(PsvWebViewActivity.this, "Unknown error", Toast.LENGTH_SHORT).show(); } } return true; } } } 

No se puede abrir el pdf directamente en el navegador web de Android Pero al utilizar Google Docs Viewer puede abrirlo en el navegador Android como ……

 mWebView.loadUrl("https://docs.google.com/gview?embedded=true&url="+ webUrl); 

Lo sé, esta pregunta es vieja.

Pero realmente me gusta el enfoque de Xamarin para hacer uso del pdf.js de Mozilla. Funciona en versiones anteriores de Android, no necesita una aplicación especial de PDF Viewer para esto y puede visualizar fácilmente un PDF dentro de la jerarquía de vistas de sus aplicaciones.

Git para esto: https://mozilla.github.io/pdf.js/

Opciones adicionales: https://github.com/mozilla/pdf.js/wiki/Viewer-options

Simplemente agregue los archivos pdfjs a su directorio de Activos:

enter image description here

Y llámalo de la siguiente manera:

 // Assuming you got your pdf file: File file = new File(Environment.getExternalStorageDirectory() + "/test.pdf"); webview = (WebView) findViewById(R.id.webview); WebSettings settings = webview.getSettings(); settings.setJavaScriptEnabled(true); settings.setAllowFileAccessFromFileURLs(true); settings.setAllowUniversalAccessFromFileURLs(true); settings.setBuiltInZoomControls(true); webview.setWebChromeClient(new WebChromeClient()); webview.loadUrl("file:///android_asset/pdfjs/web/viewer.html?file=" + file.getAbsolutePath()); 

Cosa genial: si quieres reducir la cantidad de funcionalidades / controles. Vaya al archivo Assets / pdfjs / web / viewer.html y marque ciertos controles como ocultos. Con

 style="display: none;" 

Por ejemplo, si no te gusta la barra de herramientas correcta:

  

La URL anterior no funciona. Utiliza esta nueva URL.

 mWebView.loadUrl("http://drive.google.com/viewerng/viewer?embedded=true&url="+ webUrl); 

Creo que esto tiene un límite, así que una mejor manera es lanzar directamente un bash a una aplicación de visor de PDF, si no hay una aplicación para iniciar en PDF, entonces use una vista web.

este trabajo para mi

 webView.loadUrl("https://docs.google.com/viewer?url=" + "url of your pdf");