当webview加载HTTPS链接时,出现图片无法展示的问题,首先排查需要展示的图片是Http还是Https,如果是http那么接着往下看:
知识:
这里主要是涉及到setMixedContentMode(int mode)这个方法,说到这个方法需要说一下mode的三种形式:
- MIXED_CONTENT_NEVER_ALLOW:不允许同时加载Http和https的混合模式;
- MIXED_CONTENT_ALWAYS_ALLOW:总是允许同时加载Http和https的混合模式;
- MIXED_CONTENT_COMPATIBILITY_MODE:这种webview尝试将一些不安全的内容加载到一个安全的站点上,而其他类型的内容将会被阻塞。
Android5.0以前setMixedContentMode默认的是MIXED_CONTENT_ALWAYS_ALLOW,Android5.0以后setMixedContentMode默认的是MIXED_CONTENT_NEVER_ALLOW,所以Android5.0以后,webview默认的是不支持同时加载Http和Https的混合模式;所以如果图片是Http的,需要加上以下代码:
解决:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
settings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
}
(以上问题均是自己开发遇到并解决的,如有不对或有更好的方法请大佬们指教,如对你们有帮助,倍感荣幸)