【问题标题】:android: webview shows blank screen some times while opening pdf in google docandroid:在google doc中打开pdf时,webview有时会显示空白屏幕
【发布时间】:2019-01-19 06:40:05
【问题描述】:

我在片段中使用 webview 来查看使用http://docs.google.com/viewerng/viewer?embedded=true&url 的在线 PDF。 PDF 文件有许多图片和图表。它完美地加载了 PDF。但有时它显示空白屏幕。我添加了以下代码。

webView.getSettings().setAllowFileAccessFromFileURLs(true);
webView.getSettings().setAllowUniversalAccessFromFileURLs(true);

添加后,我无法重新创建问题。但是上面两行在playstore中是不支持的。我已经尝试了所有 Links 这个问题。我主要在 API>23 的设备中看到空白屏幕。

@kkarakk 抱歉回复晚了..请在下面找到我的代码

 webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
            webView.getSettings().setBuiltInZoomControls(true);
            webView.getSettings().setSupportZoom(true);
     /*     webView.getSettings().setAllowFileAccessFromFileURLs(true);
            webView.getSettings().setAllowUniversalAccessFromFileURLs(true);*/
            webView.setWebViewClient(new MyWebViewClient());
            webView.getSettings().setJavaScriptEnabled(true);
            webView.loadUrl("http://docs.google.com/gview?embedded=true&url=MYURL");

 private class MyWebViewClient extends WebViewClient {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return true;
        }
        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            super.onPageStarted(view, url, favicon);
        }
        @Override
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);
            webView.loadUrl("javascript:(function() { document.querySelector('[role=\"toolbar\"]').remove();})()");
        }
    }

【问题讨论】:

  • 请输入 webview 的 xml 布局文件以及您如何将内容加载到其中,即代码
  • 您可以edit 更好地格式化问题。使用markdown 语法和编辑器上的按钮。您可以查看其他广受好评的问题来了解这个想法。
  • 您能否发布有问题的示例 pdf 的 URL?
  • 对此有什么答案吗?我有同样的问题。有时它加载得很好,有时我只得到一个空白页。
  • @Phil.我在三星设备中遇到了这个错误但还没有解决方案..

标签: android


【解决方案1】:

类似于桑尼的答案,但我发现比较标题是否更可靠。我还设置了尝试计数,以防它只是 url 错误,所以它不会永远尝试。

      public void onPageFinished(WebView view, String url) {
            if (view.getTitle().equals(""))
                view.loadUrl(url)
            } 
            else {
               //Success
            }
      }

【讨论】:

  • 我遇到了同样的问题。我调试了我的代码,它没有抛出错误,而是直接调用页面完成而没有任何错误,所以我也像你一样递归调用,它也适用于我
【解决方案2】:

在 onPageFinished(WebView view, String url) 中添加“webView.getContentHeight()”验证

 if (webView.getContentHeight() == 0)
{

    webView.loadUrl("https://docs.google.com......");// RE-Loading

}

我已经测试并且工作正常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多