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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 前言:只要涉及到https,大家都会第一时间想到证书验证。当然,这是没问题的。如果有要求,这个证书验证是必须的。一...
    夜封雪阅读 41,359评论 3 29
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,473评论 25 709
  • WebView·开车指南 2016-08-31BugDev 北京市东城区首席Bug布道师开山之作,一整月交通事故血...
    53c021c38a1d阅读 4,342评论 0 1
  • 今天是父亲节,给爸爸打了个电话。电话接通后对面传来的不是平日里父亲与我调侃似的对话,而是严肃的声音。我感到有些不对...
    沐微心语muv阅读 1,171评论 0 1
  • 向着天空起飞的翅膀 羽毛撒在路途远方 驾游的仙人看起来总不像个神仙 胡乱吟唱的诗人 沿着羽毛的痕迹 流传千年歌颂的...
    浅言物阅读 4,453评论 0 0

友情链接更多精彩内容