Webview no cargará archivos pdf en enlace haga clic

He desarrollado una aplicación web que muestra una lista de documentos pdf alojados en un servidor web. Esta aplicación está incrustada en una aplicación webview para Android, sin embargo, cuando carga la aplicación en mi teléfono, la selección de un enlace pdf no hace nada. ¿Qué estoy haciendo mal? Gracias

Aquí está el código java:

package com.hellowebview; import android.app.Activity; import android.os.Bundle; import android.view.KeyEvent; import android.webkit.WebView; import android.webkit.WebViewClient; public class HellowebviewActivity extends Activity { /** Called when the activity is first created. */ private WebView mWebView; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mWebView = (WebView) findViewById(R.id.webview); mWebView.getSettings().setJavaScriptEnabled(true); mWebView.loadUrl("http://aipnz.webs.com"); mWebView.setWebViewClient(new HelloWebViewClient()); mWebView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY); } private class HelloWebViewClient extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView webview, String url) { webview.loadUrl(url); return true; } } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) { mWebView.goBack(); return true; } return super.onKeyDown(keyCode, event); } } 

Si quieres cargar pdf, puedes usar documentos de Google para cargarlo.

 String googleDocs = "https://docs.google.com/viewer?url="; String pdf_url = "http://kronox.org/documentacion/Hello.Android.new.pdf"; webView.loadUrl(googleDocs + pdf_url); 

NOTA: Necesita android.permission.INTERNET en el archivo de manifiesto

Basta con crear una intención en el método shouldOverrideUrlLoading:

  @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { if ( urlIsPDF(url)){ Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(Uri.parse(url), "application/pdf"); try{ view.getContext().startActivity(intent); } catch (ActivityNotFoundException e) { //user does not have a pdf viewer installed } } else { webview.loadUrl(url); } return true; } 

Y luego, cada vez que un usuario hace clic en un vínculo PDF en una página de su vista web, el archivo se abrirá en una aplicación PDF externa.

Esta es la solución que uso:

 @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { if (url.endsWith(".pdf")){ String pdfUrl = googleDocs + url; view.loadUrl(pdfUrl); } else { view.loadUrl(url); } return true; } 

con

 private final String googleDocs = "https://docs.google.com/viewer?url="; 

Utilizar loadurl otros métodos sobrecargados … y escribir permiso de internet

Debe anular el método shouldOverrideUrlLoading en WebClient. Utilizo este enfoque con la combinación de intención y Google Docs como copia de seguridad:

 /* You might want to move this string definition somewhere else */ final String googleDocs = "https://docs.google.com/viewer?url="; WebView webView = new WebView(getContext()); //webView.getSettings().setJavaScriptEnabled(true); webView.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView webView, String url) { if (url.endsWith(".pdf")) { Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(Uri.parse(url), "application/pdf"); /* Check if there is any application capable to process PDF file. */ if (intent.resolveActivity(getPackageManager()) != null) { startActivity(intent); } else { /* If not, show PDF in Google Docs instead. */ view.loadUrl(googleDocs + url); } } else { webView.loadUrl(url); } return true; } }); 

Es posible que necesite cambiar el paso del contexto y acceder startActivity método startActivity , pero aparte de eso, debería ejecutarse tal como está.

También tenga en cuenta que desde la API 24, hay 2 métodos shouldOverrideUrlLoading que puede anular. Como se indica aquí desde @ CommonsWare, está bien para reemplazar el método obsoleto.

  • Reduciendo el tamaño de Pdf creado usando PdfDocument en android
  • Lector de PDF para Android desde cero
  • Aumentar el brillo y el contraste de la imagen después de capturar desde la cámara en Android
  • Cómo configurar el tamaño del archivo PDF con PdfDocument en Android
  • API o bibliotecas para la vista de pdf desde url en Android
  • ¿Cómo puedo mostrar pdf en html (respuesta / solución de navegación cruzada)
  • cargar pdf desde url en android
  • Java Android Studio aplicación, archivo de visualización de pdf dentro de la aplicación
  • ¿Cómo abrir el archivo pdf local en webview en android?
  • Seleccione Texto y muestre el significado como pop-up en MUPDF
  • IText crear un documento con tamaños de página desiguales
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.