deviceready没有使用sencha touch 2在phonegap 2.9.0中触发

时间:2013-07-24 15:04:37

标签: cordova sencha-touch-2

我使用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>
    <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未定义。

我做了一个拥抱研究,但我测试的所有内容都无法解决问题。欢迎任何建议 提前致谢

5 个答案:

答案 0 :(得分:5)

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

简单地评论它们直到我在我的代码中引用它们给了我一个“Phonegap就绪”。

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

答案 1 :(得分:0)

我建议您尝试使用干净的not-sencha html,只是为了追踪错误来自sencha或phonegap

答案 2 :(得分:0)

问题是由加载网址时的硬编码超时引起的。发生此超时是因为无法计算由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>

答案 3 :(得分:0)

根据iOS 8 Beta 1 release notes(WebKit部分),由于用户代理错误,Cordova / Phonegap应用程序目前已被破坏是一个众所周知的问题。

应用此临时&#34;修复&#34;通过&#34; deviceready&#34;解决了我的问题事件没有被解雇。

https://stackoverflow.com/a/24069550

答案 4 :(得分:0)

SharedPreferences prefs = getSharedPreferences(preffName, MODE_PRIVATE); 
String appName = prefs.getString("AppName", "No name defined");//"No name defined" is the default value.
String packageID = prefs.getString("PackageID", "No package id is defined."); //"No package id is defined" is the default value