2012-02-24 23 views
8

WebViewでPDFを開きたいと思い、このフォーラムでコードを見つけました。WebViewでPDFを開きます

しかし、Adobe Readerを含む複数のPDFアプリがインストールされていますが、「No PDF application found」と表示されます。

ここでコード:

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

を私はそれが奇妙な、これは動作しないことが判明し、本当にそれはあなたが手にたかっ言って見ると唯一の答えは、グーグルを使用してのWebViewでそれを見せていたことPDFを別のアプリケーションに表示して表示します。 – BigOmega

答えて

28

あなたはAndroidのWebブラウザで直接開いているPDFファイルをカントしかし、あなたのようなアンドロイドブラウザで開くことができGoogleドキュメントビューアを使用して......

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

さて、これはうまくいきませんでした。私が試した方法ではうまくいきませんでした。私はwebviewがあまり明確ではないと思います。 –

+0

** webUrl **のdocを変更すると、 Googleドキュメントで古い文書を表示します。 –

+5

限られた数のURLしか開きません。その後、「あなたは最大帯域に達しました」というメッセージが表示されます。他の選択肢はありますか? –

5

私は知っている、この質問は古いです。

しかし、私はMozillaからpdf.jsを利用するXamarinのアプローチが本当に好きです。これは古いAndroidバージョンで動作しますが、特別なPDFビューアアプリは必要ありません。アプリビュー階層内にPDFを簡単に表示できます。

このためのGit:https://mozilla.github.io/pdf.js/

追加オプション:https://github.com/mozilla/pdf.js/wiki/Viewer-options

ちょうどあなたの資産のディレクトリにpdfjsのファイルを追加します。

enter image description here

、以下の方法でそれを呼び出す:

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

クールなもの:機能/コントロールの量を減らしたい場合。 Assets/pdfjs/web/viewer.htmlファイルに移動し、特定のコントロールを非表示にします。 With

style="display: none;" 

たとえば、あなたは右のツールバー好きではない場合:

<div id="toolbarViewerRight" style="display: none;">...</div> 
関連する問題