2015-07-21 7 views
5

Ich verwende eine Webansicht, um eine Website in meiner App anzuzeigen, und diese Website enthält Links zu PDF-Dateien. Wenn diese Links jedoch gedrückt werden, zeigt die Webansicht eine leere Seite anstelle der PDF-Dateien an. Kann ich es irgendwie schaffen, die PDF-Dateien korrekt anzuzeigen?PDF anzeigen, wenn Link in WebView android geklickt wurde

Vielen Dank im Voraus.

+0

Ich bin mir ziemlich sicher, dass auch auf dem Android opne, Sie ein Plugin von Arten benötigen einen PDF anzuzeigen. Normalerweise wird das Gerät den Benutzer fragen, was er verwenden möchte, um es anzuzeigen. Ich weiß nicht, dass es eine nahtlose Möglichkeit gibt, das in eine Webansicht zu schreiben. – durbnpoisn

+0

Webviews zeigen keine PDFs an. – njzk2

Antwort

9

Sie können eine Absicht erstellen, um die PDF-Dateien zu öffnen:

@Override 
public boolean launchPDF(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; 
} 

Und dann, wenn ein Benutzer einen PDF-Link auf einer Seite innerhalb Ihrer webview klickt, wird die Datei in einem externen PDF-App öffnen.

Oder können Sie Google Docs verwenden, um sie zu starten:

String googleDocs = "https://docs.google.com/viewer?url="; 
String pdf_url = "http://www.somedomain.com/new.pdf"; 

webView.loadUrl(googleDocs + pdf_url); 

Denken Sie daran, das Internet Erlaubnis zu verwenden.

+0

Danke. das hat wirklich geholfen – Andres

0

Einfache doc/pdf etc

public static void openFile(Context context, String url) throws IOException { 
    // Create URI 
    Uri uri = Uri.parse(url); 

    Intent intent = new Intent(Intent.ACTION_VIEW); 
    // Check what kind of file you are trying to open, by comparing the url with extensions. 
    // When the if condition is matched, plugin sets the correct intent (mime) type, 
    // so Android knew what application to use to open the file 
    if (url.toString().contains(".doc") || url.toString().contains(".docx")) { 
     // Word document 
     intent.setDataAndType(uri, "application/msword"); 
    } else if(url.toString().contains(".pdf")) { 
     // PDF file 
     intent.setDataAndType(uri, "application/pdf"); 
    } else if(url.toString().contains(".ppt") || url.toString().contains(".pptx")) { 
     // Powerpoint file 
     intent.setDataAndType(uri, "application/vnd.ms-powerpoint"); 
    } else if(url.toString().contains(".xls") || url.toString().contains(".xlsx")) { 
     // Excel file 
     intent.setDataAndType(uri, "application/vnd.ms-excel"); 
    } else if(url.toString().contains(".zip") || url.toString().contains(".rar")) { 
     // WAV audio file 
     intent.setDataAndType(uri, "application/x-wav"); 
    } else if(url.toString().contains(".rtf")) { 
     // RTF file 
     intent.setDataAndType(uri, "application/rtf"); 
    } else if(url.toString().contains(".wav") || url.toString().contains(".mp3")) { 
     // WAV audio file 
     intent.setDataAndType(uri, "audio/x-wav"); 
    } else if(url.toString().contains(".gif")) { 
     // GIF file 
     intent.setDataAndType(uri, "image/gif"); 
    } else if(url.toString().contains(".jpg") || url.toString().contains(".jpeg") || url.toString().contains(".png")) { 
     // JPG file 
     intent.setDataAndType(uri, "image/jpeg"); 
    } else if(url.toString().contains(".txt")) { 
     // Text file 
     intent.setDataAndType(uri, "text/plain"); 
    } else if(url.toString().contains(".3gp") || url.toString().contains(".mpg") || url.toString().contains(".mpeg") || url.toString().contains(".mpe") || url.toString().contains(".mp4") || url.toString().contains(".avi")) { 
     // Video files 
     intent.setDataAndType(uri, "video/*"); 
    } else { 
     //if you want you can also define the intent type for any other file 

     //additionally use else clause below, to manage other unknown extensions 
     //in this case, Android will show all applications installed on the device 
     //so you can choose which application to use 
     intent.setDataAndType(uri, "*/*"); 
    } 

    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    context.startActivity(intent); 
} 
Verwandte Themen