我正在片段中使用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();})()");
}
}
答案 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.
我已经测试过并且工作正常。