WebView链接为https,内容图片为http,图片不能正常显示
在Android5.0及以上系统,当WebView加载的链接为https开头,但是链接里面的内容,比如图片为http链接,这时候,图片就不能正常加载(加载不出来)。
原因:
从Android5.0开始,WebView默认不支持同时加载Https和Http混合模式。
解决方案:
在webview加载页面之前,设置加载模式为MIXED_CONTENT_ALWAYS_ALLOW,代码如下
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
}
如果以上还不能解决,可以尝试设置WebView接受所有网站的证书,当然这会带来安全问题,请谨慎使用
在认证证书不被Android所接受的情况下,我们可以通过设置重写WebViewClient的onReceivedSslError方法在其中设置接受所有网站的证书来解决,具体代码如下:
webView.setWebViewClient(new WebViewClient() {
@Override
public void onReceivedSslError(WebView view,
SslErrorHandler handler, SslError error) {
// TODO Auto-generated method stub
// super.onReceivedSslError(view, handler, error);// 这里一定要去除,否则设置无效
// handler.cancel();// Android默认的处理方式
handler.proceed();// 接受所有网站的证书
// handleMessage(Message msg);// 进行其他处理
}
});