android:在Google文档中打开pdf时,webview有时显示空白屏幕

时间:2019-01-19 06:40:06

标签: android

我正在片段中使用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();})()");
        }
    }

2 个答案:

答案 0 :(得分:3)

类似于Sonny的答案,但我发现比较标题是否可靠。我还尝试了一次尝试计数,以防万一这只是URL错误,所以它不会永远尝试。

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

答案 1 :(得分:0)

在onPageFinished(WebView视图,字符串url)中添加“ webView.getContentHeight()”验证

Map<String, Color> colors = new HashMap<String, Color>() {{
    put("black", Color.BLACK);
    put("red", Color.RED);
    put("green", Color.GREEN);
    put("blue", Color.BLUE);
}};

Color color = null;
int rgbIndex = line.indexOf("RGB");
if (rgbIndex > -1) {
    color = colorsParser.colorFromString(line.substring(rgbIndex));
} else {
    // There are better ways to extract text between brackets, see https://stackoverflow.com/questions/24256478/pattern-to-extract-text-between-parenthesis/24256532
    String colorName = line.substring(line.indexOf("(") + 1, line.indexOf(")"));
    color = colors.get(colorName);
}

// TODO: Make sure you check if `color` is null here.

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