Открыть 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; } } } 

Вы не можете открыть PDF прямо в браузере Android. Но с помощью Google Docs Viewer вы можете открыть его в Android-браузере, например ……

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

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

Но мне очень нравится подход Xamarin, чтобы использовать pdf.js из Mozilla. Он работает на более старых версиях Android, для этого вам не требуется специальное приложение для просмотра PDF, и вы можете легко отображать 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;" 

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

  

Старый url не работает, используйте этот новый URL-адрес

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

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

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

 webView.loadUrl("https://docs.google.com/viewer?url=" + "url of your pdf"); 
Давайте будем гением компьютера.