使用Cordova / PhoneGap在Android模拟器中更改页面上的“网络错误”?

时间:2012-05-29 15:53:38

标签: cordova android-emulator

当我在模拟器中运行我的Cordova应用程序时,它可以正常加载(尽管速度非常慢,这显然是一种常见的抱怨)。我正在使用jQuery Mobile,由于我对JQM的表单方法以及JQM和Google Maps之间的冲突存在某些问题,我的应用程序的结构使得某些页面导致整个DOM重新加载而不是JQM通常引发的AJAX转换。该应用程序完全被带到一个单独的html文件。

这在iOS中运行良好,但是当我在Android模拟器中运行时,我收到“应用程序错误:发生网络错误。(file:///android_asset/www/nameOfPageIWasGoingTo.html?parameter1 =34¶meter2=真)“

Cordova重新包含在每个页面中,我放置了

super.setIntegerProperty("loadUrlTimeoutValue", 60000);

在我的主.java文件中,以便现在onCreate看起来像:

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.setIntegerProperty("loadUrlTimeoutValue", 60000);
super.loadUrl("file:///android_asset/www/index.html");
}

尽管如此,我有这个错误。谁能解释一下?

4 个答案:

答案 0 :(得分:1)

Android中存在一个错误,如果您尝试在URL中传递参数,则WebView无法加载页面。 Android将“nameOfPageIWasGoingTo.html?parameter1 =34¶meter2= true”视为文件名时应加载“nameOfPageIWasGoingTo.html”并将参数传递给页。在此期间,您应该使用localStorage.setItem / getItem在页面之间传递参数。

与此同时,你应该明白这些问题:

https://code.google.com/p/android/issues/detail?id=17535

https://code.google.com/p/android/issues/detail?id=17327

答案 1 :(得分:0)

您可能需要使用IceCreamCordovaWebViewClient

@Override
    public void init() {
    super.init(webView, new IceCreamCordovaWebViewClient(this, webView), new CordovaChromeClient(this, webView));
}

答案 2 :(得分:0)

出现这种网络错误有多种原因,但我的猜测是你的config.xml正在寻找index.html而你已经将你的html页面命名为其他东西了。 ( “nameOfPageIWasGoingTo.html”)

答案 3 :(得分:0)

不要使用查询字符串参数,而是使用window.localStorage。有点迟,但确认=)。