4

我使用 PhoneGap 2.9.0 和 SenchaTouch 开发我的 Android 应用程序 (targetSdkVersion 16)。

当我在 Chrome 中启动应用程序时,我得到了这样的日志:

Falling back on PROMPT mode since _cordovaNative is missing. Expected for Android 3.2 and lower only. cordova.js:912
deviceready has not fired after 5 seconds. cordova.js:6725
Channel not fired: onCordovaConnectionReady cordova.js:6718
Channel not fired: onCordovaInfoReady  cordova.js:6718

当我在三星平板电脑(Android 4.1.2)中测试它时,第一行消失了,但 3 个事件始终没有被触发。

然而,SenchaTouch 似乎工作得很好:视图显示和交互工作如我所料。

下面是 index.html 的 head 部分:

 <head>
    <meta charset="UTF-8">
    <title>title</title>

    <!-- The line below must be kept intact for Sencha Command to build your application -->
    <script id="microloader" type="text/javascript" src="touch/microloader/development.js"></script>

    <style type="text/css">
       some css here
    </style>

    <script type="text/javascript" charset="utf-8" src="pg/cordova.js"></script>      
    <script type="text/javascript" charset="utf-8" src="pg/barcodescanner.js"></script>  

 </head>

我使用一些 phonegap API,例如 Camera 和 File。由于 PhoneGap 从未收到 deviceready 事件,因此 API 不可用,因此 navigator.camera 未定义。

我做了一个拥抱研究,但我测试的所有东西都没有解决问题。欢迎任何建议提前谢谢

4

5 回答 5

5

有同样的问题,但在我的情况下,这是因为我在我的 config.xml 中引用了我没有在我的应用程序中实例化的插件。

只需将它们注释掉,直到我在代码中引用它们,我就会立即看到“Phonegap 已准备就绪”。

感谢:http: //community.phonegap.com/nitobi/topics/deviceready_has_not_fired_after_5_seconds

于 2013-08-18T22:09:29.937 回答
0

我建议您尝试使用干净的 not-sencha html,以跟踪错误是否来自 sencha 或 phonegap

于 2013-07-24T15:21:57.260 回答
0

该问题是由加载 url 时的硬编码超时引起的。出现此超时是因为无法计算 Sencha Touch 生成的页面大小。不幸的是,我找不到过去用来解决这个问题的资源,所以如果我错了,请纠正我,但我的解决方案是创建一个重定向到实际 index.html 的 html 文件。

<!DOCTYPE html>

<!-- Launch the generated index.html file to prevent Cordova/PhoneGap timeouts -->
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>AppName</title>
    <script>
        window.location = './index.html';
    </script>
</head>
<body></body>
</html>
于 2013-07-26T11:56:21.700 回答
0

根据iOS 8 Beta 1 发行说明(WebKit 部分),Cordova/Phonegap 应用程序当前由于用户代理错误而被破坏是一个已知问题。

应用这个临时“修复”解决了我的“设备就绪”事件没有被触发的问题。

https://stackoverflow.com/a/24069550

于 2014-06-09T17:02:11.977 回答
0
you need to include cordova plugin before closing of body tag, as follows
<!doctype html>
<html>
    <head>
    </head>
    <body>

        <script src='cordova.js' type='text/javascript'></script>
        <script src='index.js' type='text/javascript'></script>
    </body>
</html>
于 2015-06-24T07:51:33.307 回答