在 Chrome 上播放的视频与在 Android 7+ 上播放的 Android WebView 有何不同?

How is video playing on Chrome different from the Android WebView on Android 7+?

Android 7+ 使用 Chrome 作为 WebView 但还是有一些差异,因为一些视频在 Chrome 上适用于 Android 但他们不' 在 WebView 上工作。

这里有两个例子:

http://www.americatv.com.ar/vivo

http://www.tvpublica.com.ar/vivo/

我在巴西的 globosat 和其他一些网站上也看到了这一点。似乎发生的越来越多。通常更改用户代理没有帮助。

那么这些页面在检查什么或者允许这些视频在 Chrome 而不是 WebView 上播放的 WebView 中缺少什么?

谢谢。

如果您将 chrome 附加到 android WebView 的 remote instance(在我的例子中是在模拟器中),您会看到一些 javascript 失败(它们也出现在 Android 监视器中,但很难在那里看到。

特别凄美的是

  ... I/chromium: [INFO:CONSOLE(7)] "Uncaught ReferenceError: chrome is not defined", source: http://iframe.statics.space/magma/main/js/cast.js (7)

所以显然在 WebView 中 "chrome.X" 没有定义(不清楚是否是预期的)但网站期待它们。所以你可以尝试实现一个 "fake" chrome 对象并注入它(也许),或者尝试使用 Firefox 用户代理,这样它就不会尝试 chrome-y stuff:

myWebView.getSettings().setUserAgentString("Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.1");