Android WebView无法播放网络视频的问题

今天运营大大在后台添加了一个腾讯视频的链接,本来想开开心心的看看手机上面显示效果吹吹牛逼的,结果在应用里面打开发现播放不了,可真是急坏了。于是乎我就被发配去该bug了,起初我以为是他嵌入的视频地址不对,于是叫他换了flash、html和通用代码试了试,发现都不行。然后我们有换了一个优酷的视频地址,发现很神奇的播放成功了??WTF!!优酷可以,腾讯却不可以了🤔看来还是优酷视频技术更强啊😂。就在我一头雾水的时候,我突然想起来自己的网站也遇到了类似的问题,原因是在https的网页引用了http的地址,我们公司的项目用的http的地址,那腾讯视频难道用的https??经过排查,果然腾讯视频的地址是https,而优酷用的http,下面我们就可以解决问题了。

解决

android从5.0开始默认不支持http和http地址共存,所以我们就要将5.0以上的设置为允许。在WebSettings里面有setMixedContentMode用来控制混合模式。其中有三个参数:

  • MIXED_CONTENT_NEVER_ALLOW
    不允许在https模式下加载http地址,最安全的模式,android5.以后默任是这个。

  • MIXED_CONTENT_ALWAYS_ALLOW

允许在https里加载任何地址,不安全,android5.0以前默认是这个。

  • MIXED_CONTENT_COMPATIBILITY_MODE
    WebView将尝试与最新的WebView方法兼容。一些http内容可能被允许从https加载,其他类型的内容将被阻止。

所以,我们只需要把webview设置成MIXED_CONTENT_ALWAYS_ALLOW模式就可以了。

//kotlin 代码
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            val setting = mMvpView?.webView?.settings
            setting?.mixedContentMode = WebSettings.MIXED_CONTENT_ALWAYS_ALLOW
        }
Search by:GoogleBingBaidu