Открыть PDF в WebView

Я хочу открыть PDF в моем WebView, и я нашел и объединил коды на этом форуме.

но он ловит "приложение PDF не найдено", хотя у меня установлено несколько приложений PDF, включая Adobe Reader.

вот код:

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

4 ответов


(1) Google Docs Viewer, вы можете открыть его в браузере android, как,

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

обновление:

(2) Проверьте это библиотека, в построить.Gradle в(модуль приложения) добавьте эту зависимость,

compile 'com.github.barteksc:android-pdf-viewer:2.8.2'

Я знаю, этот вопрос старый.

но мне очень нравится подход Xamarin, чтобы использовать pdf.js из Mozilla. Он работает на старых версиях 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());

классная вещь: если вы хотите уменьшить объем функций / контроля. Перейдите в раздел ресурсы / pdfjs/web / viewer.html-файл и отметьте некоторые элементы управления как скрытые. С

style="display: none;"

например. Если вам не нравится право панель инструментов:

<div id="toolbarViewerRight" style="display: none;">...</div>

старый url не работает используйте этот новый url

mWebView.loadUrl("http://drive.google.com/viewerng/viewer?embedded=true&url="+ webUrl);

Я думаю, что у этого есть предел , поэтому лучший способ-напрямую запустить намерение приложения для просмотра pdf, если нет приложения для запуска pdf, используйте webview.


эта работа для меня

webView.loadUrl("https://docs.google.com/viewer?url=" + "url of your pdf");