解决Android Webview 加载一些网页出现白板现象

今天写了几个网址的链接,同一个WebView加载,其他几个链接都可以,但有一个就是不行,测试半天最总找到原因:
测试网址,具体如下
山东牧院——http://www.sdmyxy.cn/
中国猪病网——http://www.zhubing.net/
中国禽病网——http://www.qinbing.cn/
中国水产网——http://www.fishfirst.cn/
中国畜牧网http://www.chinafarming.com/
中国兽药网http://www.mulian-mall.com/
美菜网——http://www.meicai.cn/
只有中国水产网——http://www.fishfirst.cn/加载时出现白页,如下测试,排查原因:
1、经过OnLoadResource调试已经执行,即资源文件已经加载成功;
2、onReceivedSslError也没有回调到,用自带浏览器和UC都正常,证明链接本身没有问题;
3、其他几个链接页面都成功加载,即Webview也正常运行,没有出现错误,那就是Webview的配置问题了;
经过N个测试,把

webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setAllowContentAccess(true);
webView.getSettings().setAllowFileAccessFromFileURLs(true);
webView.getSettings().setAppCacheEnabled(true);
webView.getSettings().setLoadWithOverviewMode(true);
webView.getSettings().setUseWideViewPort(true);
webView.getSettings().setPluginState(WebSettings.PluginState.ON);
都打开,还是未解决。

最终设置 webView.getSettings().setDomStorageEnabled(true);后成功。
按照API的说明 Sets whether the DOM storage API is enabled. The default value is false.

也就是是否开启本地DOM存储。应该是Html 5中的localStorage(可以使用Android4.4手机和Chrome Inspcet Device联调),用于持久化的本地存储,除非主动删除数据,否则数据是永远不会过期的,绝大多数的浏览器都是支持 localStorage 的,但是鉴于它的安全特性(任何人都能读取到它,尽管有相应的限制,将敏感数据存储在这里依然不是明智之举),Android 默认是关闭该功能的。

还有一种是加载https的URL时在5.0以上加载不了,5.0以下可以加载,这种情况可能是网页中存在非https得资源,在5.0以上是默认关闭,需要设置,

webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);

WebView的问题一般查看log就能找到问题的原因。

你可能感兴趣的:(解决Android Webview 加载一些网页出现白板现象)