2012-02-24 15 views
8

Chcę otworzyć plik PDF w moim WebView, a także znalazłem i połączono kody na tym forum.Otwórz PDF w WebView

Ale to łapie "Nie znaleziono aplikacji PDF", chociaż mam wiele aplikacji PDF zainstalowanych, w tym Adobe Reader.

Oto kod:

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

Uważam to za dziwne, że to nie działa, a jedyną odpowiedzią pokazywał go w WebView używając google, kiedy naprawdę wyglądało to podoba Ci chciał przekazać PDF do innej aplikacji do przeglądania. – BigOmega

Odpowiedz

28

cant open PDF bezpośrednio w przeglądarce internetowej android Ale za pomocą Google Docs Viewer można otworzyć go w Android Browser jak ......

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

OK, to działa, niefortunne, że nie działa zgodnie z metodą, którą próbowałem, myślę, że przegląd jest mniej czytelny –

+0

Działa, ale jeśli zmienisz dokument na swoim ** webUrl **, to wymaga czasu, aby wpłynąć w dokumentach google. Wyświetla stary dokument. –

+5

Otwiera tylko ograniczoną liczbę adresów URL. Następnie wyświetla komunikat "Osiągnąłeś maksymalną przepustowość". Jakieś alternatywy? –

5

Wiem, to pytanie jest stare.

Ale bardzo podoba mi się podejście Xamarin do korzystania z pdf.js z Mozilli. Działa na starszych wersjach systemu Android, nie potrzebujesz do tego specjalnej aplikacji przeglądarki plików PDF i możesz łatwo wyświetlać plik PDF w hierarchii widoków aplikacji.

Git na to: https://mozilla.github.io/pdf.js/

Dodatkowe opcje: https://github.com/mozilla/pdf.js/wiki/Viewer-options

wystarczy dodać pliki pdfjs do katalogu Assets:

enter image description here

i nazwać go w następujący sposób:

// 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()); 

Fajna rzecz: jeśli chcesz zmniejszyć ilość funkcji/kontroli. Przejdź do pliku Assets/pdfjs/web/viewer.html i zaznacz wybrane elementy jako ukryte. Z użyciem

style="display: none;" 

na przykład. Jeśli nie podoba prawego paska narzędzi:

<div id="toolbarViewerRight" style="display: none;">...</div> 
Powiązane problemy