WebViewでPDFを開きたいのですが、このフォーラムでコードを見つけて結合しました。
しかし、Adobe Readerを含む複数のPDFアプリがインストールされていますが、「PDFアプリケーションが見つかりませんでした)」を検出します。
ここにコード:
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;
} } }
(1)Google Docs Viewer、Android Browser like、
mWebView.loadUrl("https://docs.google.com/gview?embedded=true&url="+ webUrl);
更新:
(2)これをチェックしてください ライブラリ 、build.gradle(アプリモジュール)でこの依存関係を追加します、
compile 'com.github.barteksc:Android-pdf-viewer:2.8.2'
この質問は古いです。
しかし、私はMozillaのpdf.jsを利用するためのXamarinのアプローチを本当に気に入っています。これは古いAndroidバージョンで動作します。特別なPDF Viewerアプリは必要ありません。また、PDFアプリのビュー階層内。
このためのGit: https://mozilla.github.io/pdf.js/
追加オプション: https://github.com/mozilla/pdf.js/wiki/Viewer-options
Pdfjsファイルをアセットディレクトリに追加するだけです。
そして、それを次のように呼びます:
// 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ファイルに移動し、特定のコントロールを非表示としてマークします。と
style="display: none;"
例えば。適切なツールバーが気に入らない場合:
<div id="toolbarViewerRight" style="display: none;">...</div>
更新:OS> = Marshmallow(API 23)の場合は、組み込みアプリ(PDF Viewer)を開いてPDFファイルを表示します。それ以外の場合は、ブラウザーを開いて「docs.google.com」サーバーを使用してPDFを表示します。
WebView webView = new WebView(this);
String url = "http://www.pdf995.com/samples/pdf.pdf";
// Support all types of OS versions.
if(Android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
webView.loadUrl(url); // This will open it with a built-in PDF viewer app.
else
webView.loadUrl("http://docs.google.com/viewerng/viewer?url="+ url); // This will open it with a browser. On Android 5.0 (Api 21 - Lollipop) and bellow.
// Set Download listener.
webView.setDownloadListener((url1, userAgent, contentDisposition, mimetype, contentLength)
-> startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url1))));
この仕事は私にとって
webView.loadUrl("https://docs.google.com/viewer?url=" + "url of your pdf");
これを試すことができます。 。pdfと。docx
String pdfUrl = "https://www.abcd.com/assets/uploads/profilepics/abc.pdf"; //your pdf url
String url = "http://docs.google.com/gview?embedded=true&url=" + pdfUrl;
WebView webView = findViewById(R.id.webview_cv_viewer);
webView.getSettings().setSupportZoom(true);
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl(url);
古いURLは機能していません。この新しいURLを使用してください
mWebView.loadUrl("http://drive.google.com/viewerng/viewer?embedded=true&url="+ webUrl);
これには制限があると思います。PDFを起動するアプリがない場合は、PDFビューアーアプリにインテントを直接起動するのがより良い方法です。その後、webviewを使用します。