Android Webview 部分图片显示不出来问题

最近发现在华为Mate 10 上面我们app的内置webview会有部分图片不展示,直接就图裂了。

经过绕了一大圈后才解决了问题,其实问题原因很简单,但是分析过程不顺利。拿出来分享下,希望可以帮助大家少走弯路。

简单说下这个问题的背景

1.我们的新闻图片在除了华为Mate 10 上的android 机都可以正常展示图片。但是到了Mate 10 发现图裂了

2.项目使用的是腾讯X5浏览器内核

3.Mate10上只有一部分图片不能展示,有些是可以的,并且我们的网页放到系统的自带浏览器也能展示

 

解决步骤:

1.先根据X5文档测试下

您的app打开网页http://soft.imtt.qq.com/browser/tes/feedback.html,显示000000表示加载的是系统内核,显示大于零的数字表示加载了x5内核(该数字是x5内核版本号)

 

发现压根就没使用X5内核,使用的是系统内核……

然后尝试解决,但是X5内核就是启动不了。

好吧,那就换个思路,为什么系统的内核不能展示图片呢

2.分析下我们的HTML代码 拿出了图片部分的链接。用我们APP的WebView加载

发现居然是可以直接展示的!这就奇怪了,图片单独访问可以展示,放在H5代码就不行。

3.最后翻了翻API发现

Android Webview 部分图片显示不出来问题_第1张图片

对,就是这里 5.0以上是默认不允许用安全的来源里加载不安全的资源(英语渣,见谅)。

看了下我们的H5代码 还真是,H5的URL是HTTPS,而资源图片的是HTTP。

所以设置下

WebSettings webSetting = webview.getSettings();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
   webSetting.setMixedContentMode(android.webkit.WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
}

 

OK,问题解决了

你可能感兴趣的:(Android,编程中遇到的问题)