WebView链接为https,内容图片为http,图片不能正常显示

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);// 进行其他处理
    }
});

你可能感兴趣的:(WebView链接为https,内容图片为http,图片不能正常显示)