今天遇见了一个奇怪的bug,一个上传图片功能使用vant的uploader组件,在pc模拟器试的好好的,但是内嵌到安卓webview页面之后就显示不出来图片了,ios却正常。使用vconsole调试也看不出任何报错,图片上传接口也都正常。一开始以为是vant的这个组件有问题,不兼容安卓,网上查了一圈说是把input中的accept属性给去掉,结果去掉后还是显示不出来。这时测试说生产环境没问题,只有开发和测试环境会这样,我才恍然大悟,会不会是图片地址的问题。生产环境上传图片后的地址都是https的而开发和测试环境的图片地址是http的,安卓是不是有某种机制,不允许https当中加载http资源。一查果然是这样,android webview 从Lollipop(5.0)开始webview默认不允许混合模式,https当中不能加载http资源。解决办法是:
//解决图片加载不出来问题
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP) {
mBridgeWebView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
}
mBridgeWebView.getSettings().setBlockNetworkImage(false);
刚好前阵子遇到了网站配置完ssl证书后https加载http资源的问题,所以很快就想到了这块,不然还会傻不拉几的去查是不是vant的问题,哈哈。