我想使用WebView在我的andoird app上加载第三方网址(http://domain1.com)。此网址包含一个iframe,其他域名(http://domain2.com)有一个视频播放器。页面加载成功,但播放视频时无法加载(当设备的api级别为< 21时),并且android studio控制台显示下一条消息:阻止来自原始“http://domain2.com”的帧访问具有原始“http://www.domain1.com”协议,域和端口的帧必须匹配。当设备的api级别> = 21时,工作正常。
WebView的代码:
WebView myWebView = (WebView) view.findViewById(R.id.webView);
myWebView.getSettings().setJavaScriptEnabled(true);
myWebView.getSettings().setAllowUniversalAccessFromFileURLs(true);
myWebView.getSettings().setAllowFileAccessFromFileURLs(true);
myWebView.setWebChromeClient(new WebChromeClient());
myWebView.loadUrl(urlWin);
if (Build.VERSION.SDK_INT >= 21) {
myWebView.getSettings().setMixedContentMode( WebSettings.MIXED_CONTENT_COMPATIBILITY_MODE );
} else {
// Code for Build.VERSION.SDK_INT < 21
}
如何在api级别启用webview的混合内容&lt; 21?
答案 0 :(得分:-1)
与setMixedContentMode(int)一起使用在此模式下,WebView将尝试与混合内容相关的现代Web浏览器方法兼容。可以允许一些不安全的内容由安全起源加载,并且将阻止其他类型的内容。允许或阻止的内容类型可能会将发布更改为发布,并且未明确定义。此模式旨在供不能控制其呈现的内容但希望在合理安全的环境中操作的应用程序使用。为获得最高安全性,建议应用程序使用MIXED_CONTENT_NEVER_ALLOW。
代码示例:
webView
.getSettings()
.setMixedContentMode(WebSettings.MIXED_CONTENT_COMPATIBILITY_MODE);