2012-02-24 76 views
8

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

Pero detecta la "No se encontró la aplicación PDF" aunque tengo instaladas varias aplicaciones de PDF, 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; 
     } } } 
+0

Me resulta extraño que esto no funciona, y que la única respuesta que estaba mostrando en una vista web a través de Google, cuando en realidad se veía le gusta que quería entregar el PDF a otra aplicación para ver. – BigOmega

Respuesta

28

Usted no puede pdf abierta directamente en el navegador web androide Pero el uso de Google Docs Viewer puede abrirlo en el navegador de Android como ......

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

Bien, esto funciona, es una pena que no funcione de acuerdo con el método que probé, creo que la vista web es menos clara –

+0

Funciona, pero si cambia el documento en su ** webUrl **, lleva tiempo afectar en google docs. Muestra el documento antiguo. –

+5

Abre solo un número limitado de URL. Después de eso, muestra un mensaje "Has alcanzado el ancho de banda máximo". Alguna alternativa? –

5

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

Sólo tiene que añadir los archivos pdfjs a su directorio de Activos:

enter image description here

y lo llaman 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()); 

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

style="display: none;" 

E.g. Si no te gusta la barra de herramientas derecha:

<div id="toolbarViewerRight" style="display: none;">...</div> 
Cuestiones relacionadas