我有一个Android应用程序,可以从assets文件夹中将html文件加载到WebView中。然后,该文件中的Javascript尝试进行Ajax调用,以从远程服务器检索数据。尝试在4.1设备上成功,但在4.4设备上失败。
活动的onCreate中的相关代码:
mWebView = (WebView)findViewById(R.id.webView);
WebSettings webSettings = mWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setAllowFileAccess(true);
webSettings.setAllowUniversalAccessFromFileURLs(true);
mWebView.loadUrl("file:///android_asset/test.html");
在test.html的head元素中(不包含其他javascript):
<script type="text/javascript" src="js/zepto.min.js"></script>
<script type="text/javascript" >
$(document).ready( function()
{
var url = 'http://google.com';
$.ajax(
{
type: 'GET',
url: url,
success: function(dataAsText)
{
$('#report').html("Success");
},
error: function( xhr, type)
{
$('#report').html("Error");
});
});
</script>
- 我在4.2上取得成功,在4.4上出现错误。
根据文档,webSettings.setAllowUniversalAccessFromFileURLs(true);应该启用跨域调用。
我正在使用zepto;我尝试使用jquery而且发生了同样的事情。
据我所知,KitKat中的WebView发生了重大变化。是否还有其他一些与安全相关的设置?
提前感谢您的帮助。