2015-07-21 12 views
5

Używam widoku sieci Web do wyświetlania witryny w mojej aplikacji, a ta witryna zawiera łącza do plików PDF. Ale po naciśnięciu tych linków widok internetowy wyświetla pustą stronę zamiast plików PDF. Czy mimo to mogę go wyświetlić, aby poprawnie wyświetlać pliki PDF?Wyświetl plik PDF po kliknięciu linku w WebView android

Z góry dziękuję.

+0

Jestem pewien, że nawet na Androidzie, potrzebujesz wtyczki sortuje do wyświetlania plików PDF. Zwykle urządzenie zapyta użytkownika, czego chciałby użyć, aby go wyświetlić. Nie wiem, że istnieje płynny sposób zapisu tego w widoku internetowym. – durbnpoisn

+0

odwiedziny nie wyświetlają plików PDF. – njzk2

Odpowiedz

9

Można utworzyć zamiar otworzyć pliki PDF:

@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; 
} 

I wtedy, gdy użytkownik kliknie link PDF w ciągu swojej stronie WebView, plik otworzy się w zewnętrznej aplikacji PDF.

Można też korzystać z Dokumentów Google, aby je uruchomić:

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

webView.loadUrl(googleDocs + pdf_url); 

Pamiętaj, aby korzystać z Internetu zgody.

+0

Dzięki. to naprawdę pomogło – Andres

0

Prosta opne doc/pdf itp

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); 
} 
Powiązane problemy