允许在Android web视图+ jQuery Mobile的远程Ajax调用视图、web、Android、Ajax

2023-09-10 13:54:58 作者:回忆虐心

我正在开发与jquerymobile的的JavaScript / HTML应用程序,这使得AJAX请求发送到远程服务器。该应用程序正常工作的Chrome浏览器(仅推出Chrome浏览器与Web安全禁用),但是当我的Andr​​oid应用程序(一个简单的WebView)远程AJAX调用失败的资产/目录中嵌入。因此,我想这可能是一个跨域的问题。我知道,PhoneGap的没有这个问题,但我想不使用PhoneGap的如果可能的话。所以,问题是:如何禁用在Android的WebView应用程序跨域保护

这是活动code:

 公共类白鲸延伸活动{

@燮pressLint(NewApi)
@覆盖
保护无效的onCreate(包savedInstanceState){
    super.onCreate(savedInstanceState);
    的setContentView(R.layout.activity_moby);

    的WebView mbrowser =(web视图)findViewById(R.id.webView1); //从布局XML的web视图
    如果(Build.VERSION.SDK_INT> = VERSION_ codeS.JELLY_BEAN)
        。mbrowser.getSettings()setAllowUniversalAccessFromFileURLs(真正的);
    //mbrowser.setWebChromeClient(new WebChromeClient());
    mbrowser.setWebViewClient(新WebViewClient());
    mbrowser.loadUrl(文件:///android_asset/index.html); //设置HTML
    WebSettings设置= mbrowser.getSettings();
    settings.setJavaScriptEnabled(真正的);
}
 

}

 <使用-权限的Andr​​oid:名称=android.permission.INTERNET对/>
 
使用jQuery Mobile实现新闻浏览器 3

和我已经设置了jquerymobile跨域参数在我的HTML网页:

 <脚本SRC =脚本/ jQuery的-1.8.2.js>< / SCRIPT>
<脚本>
 (文档)$ .bind(mobileinit,函数(){
 $ .support.cors = TRUE;
 $ .mobile.allowCrossDomainPages = TRUE;
});
< / SCRIPT>
<脚本SRC =脚本/ jquery.mobile-1.2.0.js>< / SCRIPT>
 

解决方案

试试这个

 的WebView网页=(web视图)findViewById(R.id.webView1);
web.getSettings()setJavaScriptEnabled(真)。
 

I'm developing an javascript/HTML application with jquerymobile which makes ajax requests to a remote server. The application works fine on Chrome (only launching chrome with web security disabled) but when I embed it within the assets/ directory of an Android application (a simple webview) the remote ajax calls fail. Thus I guess it may be a cross domain issue. I'm aware that phonegap does not have this issue but I would like not to use phonegap if possible. So the question is: how do I disable cross domain protection in an Android webview application?

this is the Activity code:

public class Moby extends Activity {

@SuppressLint("NewApi")
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_moby);

    WebView mbrowser = (WebView) findViewById(R.id.webView1); //get the WebView from the layout XML
    if (Build.VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN) 
        mbrowser.getSettings().setAllowUniversalAccessFromFileURLs(true);
    //mbrowser.setWebChromeClient(new WebChromeClient());
    mbrowser.setWebViewClient(new WebViewClient());
    mbrowser.loadUrl("file:///android_asset/index.html"); //set the HTML
    WebSettings settings = mbrowser.getSettings();
    settings.setJavaScriptEnabled(true);
}

}

<uses-permission android:name="android.permission.INTERNET" />

And I already set the jquerymobile cross domain parameters in my html pages:

<script src="script/jquery-1.8.2.js"></script>
<script>
 $(document).bind("mobileinit", function(){
 $.support.cors = true;
 $.mobile.allowCrossDomainPages = true;       
}); 
</script>
<script src="script/jquery.mobile-1.2.0.js"></script>

解决方案

Try this

WebView web=(WebView) findViewById(R.id.webView1);
web.getSettings().setJavaScriptEnabled(true);