PhoneGap没有在Android 4.2上启动deviceready

27 events android cordova

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

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

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

小智 29

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

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="16" />   (Before it was ="17")
Run Code Online (Sandbox Code Playgroud)

我希望这适用于某人.

迭戈


Tom*_*son 17

现在是凌晨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");
}
Run Code Online (Sandbox Code Playgroud)

  • 太棒了,它有效!这是工作cordova.jar节省一些人的时间:https://dl.dropbox.com/u/14645664/cordova-2.2.0.jar (8认同)

Ada*_*ela 9

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

而不是

<script type="text/javascript" src="phonegap.js"></script>
Run Code Online (Sandbox Code Playgroud)

我放

<script type="text/javascript" src="cordova.js"></script>
Run Code Online (Sandbox Code Playgroud)