我在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)
在我的例子中,自动生成的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)
| 归档时间: |
|
| 查看次数: |
14378 次 |
| 最近记录: |