Открыть 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 в каталог активов:
и назовите это следующим образом:
// 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.