WebView加载图片失败问题

2019-12-05  本文已影响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

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

上一篇下一篇

猜你喜欢

热点阅读