PhoneGap没有在Android 4.2上启动deviceready

我在Windows上使用create.bat创建了一个应用程序,并使用ADT和最新的SDK对其进行了编译。

它启动并显示cordova显示器,但它不会触发deviceready事件,因为它一直说“连接到设备”。 这同样适用于仿真器。 当我将模拟器的操作系统更改为4.0时,它可以工作。

这是正常的,因为4.2刚刚发布,我不得不等待更新?

Solutions Collecting From Web of "PhoneGap没有在Android 4.2上启动deviceready"

现在是凌晨1点,我终于让我的应用程序再次运行。 Android 4.2包含一些与webView.addJavascriptInterface相关的安全相关更改,这些更改将停止默认桥接模式的工作。

我希望在下一个版本中有更好的修复,但如果你需要快速修复,请尝试更新到CordovaWebView.exposeJsInterface

private void exposeJsInterface() { int SDK_INT = Build.VERSION.SDK_INT; boolean isHoneycomb = (SDK_INT >= Build.VERSION_CODES.HONEYCOMB && SDK_INT < = Build.VERSION_CODES.HONEYCOMB_MR2); if (isHoneycomb || (SDK_INT < Build.VERSION_CODES.GINGERBREAD)) { Log.i(TAG, "Disabled addJavascriptInterface() bridge since Android version is old."); // Bug being that Java Strings do not get converted to JS strings automatically. // This isn't hard to work-around on the JS side, but it's easier to just // use the prompt bridge instead. return; } else if (SDK_INT < Build.VERSION_CODES.HONEYCOMB && Build.MANUFACTURER.equals("unknown")) { // addJavascriptInterface crashes on the 2.3 emulator. Log.i(TAG, "Disabled addJavascriptInterface() bridge callback due to a bug on the 2.3 emulator"); return; } else if (SDK_INT == Build.VERSION_CODES.JELLY_BEAN_MR1) { Log.i(TAG, "Disabled addJavascriptInterface() bridge callback for 4.2"); return; } this.addJavascriptInterface(exposedJsApi, "_cordovaNative"); } 

我在Android 4.2的Nexus 7上遇到了同样的问题但是当我将AndroidManifest targetSdkVersion更改为“16”时它可以正常工作

  (Before it was ="17") 

我希望这适用于某人。

迭戈

在我的例子中,自动生成的index.html指的是phonegap.js

而不是

  

我放

  

显然,这已在Phonegap 2.3.0中修复 。

在Android 4.2上也遇到了这个问题,我的项目使用的是Phonegap 2.2。

在此简单升级过程后更新 – 问题已解决。

因此,升级到2.3.0后,再次设置android:targetSdkVersion="17"

另一个原因是您的cordova-2.3.0.jar可能与cordova-2.3.0.js文件版本不匹配。

我通过删除js文件(Index.js)中的任何错误解决了我的问题。

你必须确保你的javascript没有任何错误。