PhoneGap,连接服务器失败。

13

我正在尝试使用PhoneGap编写Android应用程序,并编写一个带有按钮的静态首页。在引入jQuery mobile和jQuery(它们作为外部文件链接)之前,一切都正常。现在,它给我这个错误消息(在产生空白窗口约30秒后):

连接到服务器未能成功到达“www/assets/index.html”

由于该消息很快消失,所以我无法阅读更多信息。有什么帮助吗?


我只在虚拟设备上遇到这个错误,在真实设备上不会出现这个错误。 - Ata Iravani
5个回答

7

“作为外部文件链接”是什么意思?

jQuery Mobile 和 jQuery 的源代码必须位于 assets/www 目录中,或者链接到可访问的启用无线电波或移动数据的 cdn 网站上。

这里有一个例子 here

此外,请参见 JQuery Mobile + PhoneGap for Android - Error loading index.html - 在调用 super.loadUrl 之前,在您的自定义 Activity 文件中添加以下行:super.setIntegerProperty("loadUrlTimeoutValue", 60000);


我可以在错误提示下面看到我的页面,上面显示无法加载我的页面,这对我很有效。详见:https://dev59.com/tWw15IYBdhLWcg3wpNYB - Peter Ehrlich
将近两年过去了,我仍然不知道这是怎么发生的。我不得不放弃那个客户 - 他就是无法在他的设备上连接!所有的资源都已经链接好了,而且我也使用了Phonegap Build服务... - Dhaivat Pandya

4

更好的解决方案是保持一个极其轻量级的文件作为初始加载,然后重定向到原始的index.html。例如:

<!doctype html>
<html>
  <head>
   <title>tittle</title>
   <script>
       window.location = './index.html';
   </script>
  <body>
  </body>
</html>

这通常不是在网络上做的事情 - 为什么要在Phonegap上做这样的事情? - Dhaivat Pandya
@DhaivatPandya 如果什么都没用,那么这是解决问题的一种方法。如果您不满意这种方法,那么您需要回去思考出了什么问题,为什么它需要超过60秒或任何限制。 - GoodSp33d

3
这解决了我的问题。
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    super.loadUrl("file:///android_asset/www/home/index.html");
    super.setIntegerProperty("loadUrlTimeoutValue", 10000); 

我已经在com.mypackage.xxx.java文件中添加了super.setIntegerProperty("loadUrlTimeoutValue", 10000);,用于等待10秒的时间。


这对我没有用 - 超时值可能无法更改(因为我正在使用Phonegap Build服务) - 这实际上应该是Phonegap人员容易解决的问题。 - Dhaivat Pandya

1

我怀疑问题在于您输入了super.loadUrl()的错误。 loadUrl应该有这个字符串file:///android_asset/www/index.html,并且实际上位于assets/www/

缺少的“s”让我个人感到困惑。

编辑:

检查其他一些事项:

  • 浏览器能够访问互联网
  • 权限访问互联网。
  • 尝试将jquery和jqm库下载到设备上,并将它们与index.html存储在一起。由于模拟器速度较慢,可能会干扰页面对下载库的响应。本地存储应该避免这种情况。

你在模拟器上运行吗? - CoatedMoose
更具体地说,您在模拟器中是否有互联网连接? - CoatedMoose

0

嗨,我认为您在启动时加载了多个脚本,因此您可以尝试像这样做:

<!doctype html>

<html>

    <head>

        <title>tittle</title>

        <script>

            window.location='./main.html';

        </script>

    <body>      

    </body>

</html>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接