关于 Webview 的混合模式(华为 P30 出现问题)

栏目: Android · 发布时间: 6年前

内容简介:从 Android 5.0 开始,Webview 默认不支持同时加载 Https 和 Http 混合模式,加上这段代码主动开启混合模式(但并不是万能的):

从 Android 5.0 开始,Webview 默认不支持同时加载 Https 和 Http 混合模式,加上这段代码主动开启混合模式(但并不是万能的):

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    webSetting.setMixedContentMode(WebSettings.MIXED_CONTENT_COMPATIBILITY_MODE);
}
复制代码

Webview 的 3 种模式:

  1. MIXED_CONTENT_NEVER_ALLOW :Webview 不允许一个安全的站点(Https)去加载非安全的站点内容(Http), 比如 Https 网页内容的图片是 Http 链接。强烈建议 App 使用这种模式,因为这样更安全。
  1. MIXED_CONTENT_ALWAYS_ALLOW :在这种模式下,Webview 是可以在一个安全的站点(Https)里加载非安全的站点内容(Http), 这是 Webview 最不安全的操作模式,尽可能地不要使用这种模式。
  1. MIXED_CONTENT_COMPATIBILITY_MODE :在这种模式下,当涉及到混合式内容时,Webview 会尝试去兼容最新 Web 浏览器的风格。 一些不安全的内容(Http)能被加载到一个安全的站点上(Https),而其他类型的内容将会被阻塞。 这些内容的类型是被允许加载还是被阻塞可能会随着版本的不同而改变,并没有明确的定义。 这种模式主要用于在 App 里面不能控制内容的渲染,但是又希望在一个安全的环境下运行。

后记:

  1. 第三种模式极少会用到,因为它是真的不安全了,而第二种方式,在某种意义上来说,它其实还是安全的。 后来貌似是遇到了 Https 的网页,加载了 Http 的 JS 文件,导致不得不用到第三种方式。
  1. 另外:即使开启了 MIXED_CONTENT_ALWAYS_ALLOW 或者 MIXED_CONTENT_COMPATIBILITY_MODE ,部分情况下还是会出问题, 目前最新情况出现在华为 P30(Android 9.0) 上,即使开启了混合模式,Https 加载 Http 资源(如图片),还是会出现图片加载不出来,并回调 WebviewClient 的 onReceivedError() ,所以如果有根据此方法回调而设置错误占位图的话,即使 Webview 界面加载出来了也还是会回调 onReceivedError() ,所以这种情况只能让后台去修改 Http 为 Https 了,混合模式并不是万能的,至少在华为 P30 的 Android 9.0 上行不通。
  2. 备注:在 X5 内核的 Webview 中,是找不到 MIXED_CONTENT_ALWAYS_ALLOW 这些参数的,只能手动把值设上去: MIXED_CONTENT_NEVER_ALLOW = 0; MIXED_CONTENT_ALWAYS_ALLOW = 1; MIXED_CONTENT_COMPATIBILITY_MODE = 2;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    webSetting.setMixedContentMode(2);
}
复制代码

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

响应式Web设计实践

响应式Web设计实践

[美] Tim Kadlec / 侯鸿儒 / 人民邮电出版社 / 2013-3-1 / 55.00元

随着各种各样的移动设备不断地涌现到使用者面前,Web设计的适应性已经成为设计师们所面临的最为艰巨的挑战。你设计出的网站不仅要在桌面计算机的大尺寸屏幕上可以为用户提供友好的UI和用户体验,同时在小尺寸屏幕上也应该可以提供一致的用户体验,并可以让用户能够在桌面大屏幕上和移动小屏幕上平滑切换,同时没有任何的不适应感觉。 本书作者是一位出色的开发者,在本书中,他将诸多技术和设计理念杂糅在一起,再辅以......一起来看看 《响应式Web设计实践》 这本书的介绍吧!

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具