【问题标题】:"Network Error" on page change in Android Emulator, with Cordova/PhoneGap?使用 Cordova/PhoneGap 在 Android 模拟器中更改页面时出现“网络错误”?
【发布时间】:2012-05-29 15:53:38
【问题描述】:

当我在模拟器中运行我的 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");
}

不过,我有这个错误。谁能解释一下?

【问题讨论】:

    标签: cordova android-emulator


    【解决方案1】:

    Android 中存在一个错误,即如果您尝试在 URL 中传递参数,WebView 将无法加载页面。当 Android 应加载 "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

    【讨论】:

      【解决方案2】:

      您可能需要使用 IceCreamCordovaWebViewClient

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

      【讨论】:

        【解决方案3】:

        这个网络错误出现的原因有很多,但我猜是您的 config.xml 正在寻找 index.html,而您已将 html 页面命名为其他名称。 ("nameOfPageIWasGoingTo.html")

        【讨论】:

          【解决方案4】:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2015-10-07
            • 2014-08-15
            • 2015-05-01
            • 2016-08-30
            • 2013-02-20
            • 2019-06-04
            • 2012-12-02
            • 2015-08-03
            相关资源
            最近更新 更多