我正在使用 Android System WebView 在应用程序中加载本地 PDF,它与 webview 在同一屏幕上具有一些其他功能。直到 webview 版本 129.xxx,本地 PDF 加载都非常顺利,但是在 webview 版本从 google 更新到 130.xxx 之后,它就停止加载本地 PDF。

我卸载了最新版本 130.xxx 并且 webview 再次开始工作。

大约有 50,000 名用户正在使用我的应用程序。需要帮助尽快解决这个问题。

 WebView webView = (WebView) findViewById(R.id.webView);
    WebSettings settings = webView.getSettings();
    settings.setJavaScriptEnabled(true);
    settings.setAllowFileAccessFromFileURLs(true);
    settings.setAllowFileAccess(true);
    settings.setAllowUniversalAccessFromFileURLs(true);
    webView.setWebChromeClient(new WebChromeClient());
    webView.getSettings().setSupportZoom(true);
    webView.getSettings().setDisplayZoomControls(false);
    webView.getSettings().setBuiltInZoomControls(true);
    Uri uri = Uri.parse(path);//Uri.parse("./../../report.pdf");
    webView.loadUrl("file:///android_asset/pdfjs/web/viewer.html?file=" + uri.toString());

4

  • 1
    上次我检查时,WebView没有原生渲染 PDF 的能力。我建议您编辑您的问题,提供一个,展示您一直在使用的内容,并详细解释“停止加载”的含义。


    – 


  • @CommonsWare 我已经编辑了答案并添加了代码片段来展示它是如何在本地加载的。


    – 

  • 1
    你使用的是哪个 pdfjs 版本?也许这是一个问题,请参阅


    – 

  • 并且,仅供参考,您不需要使用 WebView 来呈现 PDF,而是使用 Jetpack 的 PDF 查看器,


    – 

$(function() {
$(“.js-gps-inline-related-questions .spacer”).on(“click”, function () {
fireRelatedEvent($(this).index() + 1, $(this).data(‘question-id’));
});

function fireRelatedEvent(position, questionId) {
StackExchange.using(“gps”, function() {
StackExchange.gps.track(‘related_questions.click’,
{
position: position,
originQuestionId: 79133909,
relatedQuestionId: +questionId,
location: ‘inline’,
source: ‘Baseline_Fallback’
});
});
}
});

function toggleInlineRelated(showMore) {
var inlineRelatedLess = document.getElementById(“inline_related_var_a_less”);
var inlineRelatedMore = document.getElementById(“inline_related_var_a_more”);

var inlineRelatedSeeMore = document.getElementById(“inline_related_see_more”);
var inlineRelatedSeeLess = document.getElementById(“inline_related_see_less”);

if (showMore) {
inlineRelatedLess.classList.add(“d-none”);
inlineRelatedSeeMore.classList.add(“d-none”);

inlineRelatedMore.classList.remove(“d-none”);
inlineRelatedSeeLess.classList.remove(“d-none”);
}
else {
inlineRelatedMore.classList.add(“d-none”);
inlineRelatedSeeLess.classList.add(“d-none”);

inlineRelatedLess.classList.remove(“d-none”);
inlineRelatedSeeMore.classList.remove(“d-none”);
}
}

0