我使用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未定义。
我做了一个拥抱研究,但我测试的所有内容都无法解决问题。欢迎任何建议 提前致谢
答案 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;解决了我的问题事件没有被解雇。
答案 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