PhoneGap no dispara deviceready en Android 4.2
He creado una aplicación con el create.bat en ventanas y compilado con ADT y el SDK más reciente.
Se lanza y muestra la pantalla cordova, pero no disparar el evento deviceready como sigue diciendo "conectar al dispositivo". Lo mismo se aplica al emulador. Funciona cuando cambio el OS a 4.0 para el emulador sin embargo.
- borrar el evento del calendario en android mediante programación
- Compruebe si el evento ya está en el calendario
- Escucha los nuevos eventos del calendario
- Android cómo detectar Copiar evento de Editado en android
- Maneje los clics del audífono bluetooth (ACTION_VOICE_COMMAND y ACTION_WEB_SEARCH) en Android
¿Es esto normal porque 4.2 acaba de ser lanzado y tengo que esperar para una actualización?
- Utilizar getRotationMatrix y getOrientation en Android 2.1
- Cómo obtener eventos de google cuenta calendario en android?
- ¿Cómo puedo realizar el procesamiento de eventos sin bloqueo en Android?
- Evento para manejar el foco del EditText
- Android: ViewPager y HorizontalScrollVIew
- Audiencia de eventos personalizada en la aplicación para Android
- Abrir y mostrar el evento del calendario en android
- Cómo añadir un evento en un calendario para Android
Es 1 am y finalmente tengo mi aplicación corriendo de nuevo. Android 4.2 incluye algunos cambios aparentemente relacionados con la seguridad de webView.addJavascriptInterface, que detiene el modo predeterminado de puente de trabajo.
Espero que haya una solución mejor en la próxima versión, pero si necesita una solución rápida, pruebe esta actualización a 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"); }
Tuve el mismo problema en mi Nexus 7 con Android 4.2, pero funciona cuando cambio el targetSdkVersion de AndroidManifest a "16"
<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="16" /> (Before it was ="17")
Espero que esto funcione para alguien.
Diego
En mi caso auto generado index.html se refería a phonegap.js
Así que en lugar de
<script type="text/javascript" src="phonegap.js"></script>
pongo
<script type="text/javascript" src="cordova.js"></script>
Aparentemente esto se soluciona en Phonegap 2.3.0 .
También encontré este problema en Android 4.2, mi proyecto estaba utilizando Phonegap 2.2.
Actualizado siguiendo este simple procedimiento de actualización – problema resuelto.
Por lo tanto, después de la actualización a 2.3.0, la configuración de android:targetSdkVersion="17"
está bien de nuevo.
Otra causa de esto es que su cordova-2.3.0.jar puede no coincidir con la versión del archivo cordova-2.3.0.js.
He resuelto mi problema mediante la eliminación de cualquier error en el archivo js (Index.js).
Usted debe asegurarse de que usted javascript no tiene ningún error.
- Android: Cómo dibujar las direcciones de la ruta google maps API V2 desde la ubicación actual hasta el destino
- Declare la variable final, pero establezca después