美文网首页
WebView加载图片失败问题

WebView加载图片失败问题

作者: 静水红阳 | 来源:发表于2019-12-05 11:13 被阅读0次

    问题描述

    WebView大家都熟悉了,是用来加载H5页面的常用控件。我遇到问题具体情况如下:
    h5页面在WebView上加载时总是加载图片失败,但是在浏览器却十分正常。
    系统:Android 7.0

    问题分析

    发现这个问题后,我的第一反应就是WebSetting设置不对或者缺少了什么项才会出现这个问题,于是反复检查了WebSetting配置,当时的设置项具体如下:

    val webSettings = webView?.settings
            webSettings?.javaScriptEnabled = true     //支持js
            webSettings?.domStorageEnabled = true
            webSettings?.useWideViewPort = true  
            webSettings?.loadWithOverviewMode = true 
            webSettings?.allowFileAccess = true  //设置可以访问文件
            webSettings?.setNeedInitialFocus(true) //当webview调用requestFocus时为webview设置节点
            webSettings?.javaScriptCanOpenWindowsAutomatically = true //支持通过JS打开新窗口
            webSettings?.loadsImagesAutomatically = true  //支持自动加载图片
            webSettings?.defaultTextEncodingName = "utf-8"//设置编码格式
    

    反复检查后感觉没什么大问题,后来QA同事反映此页面在测试环境下正常,因此想到了是不是http和https配置影响了这个问题,查找文档找到了如下说明:

    Android 5.0 更改了应用的默认行为。
    
    如果您的应用是面向 API 级别 21 或更高级别:
    默认情况下,系统会阻止混合内容和第三方 Cookie。要允许混合内容和第三方 Cookie,请分别使用 setMixedContentMode() 和 setAcceptThirdPartyCookies() 方法。
    

    查看图片网址,发现图片地址URL发现是http的,而网址是https的。

    问题解决

    在Android 5.0以上需要添加如下代码支持HTTP和HTTPS混合调用:

    webSettings?.mixedContentMode = WebSettings.MIXED_CONTENT_ALWAYS_ALLOW   //支持HTTP和HTTPS
    

    添加如上代码之后,问题已解决。

    相关文章

      网友评论

          本文标题:WebView加载图片失败问题

          本文链接:https://www.haomeiwen.com/subject/hlldgctx.html