Intereting Posts
Круговой индикатор выполнения (для таймера обратного отсчета) После того, как фрагмент изменения конфигурации из backstack теперь использует FrameLayout? Как получить почтовые сообщения Gmail программно в android Как иметь более широкую прокрутку изображения в фоновом режиме Как показать только верхнюю и нижнюю границу Android-студия Logcat медленно отображает результаты Платеж Google In-App, IllegalArgumentException: намерение службы должно быть явным, после перехода на Android L Dev Preview Какова взаимосвязь между задачами и задним стеком Как преобразовать приложение java swing для работы на Android Элементы ввода на android 4.x не могут быть созданы при фокусировке Android – Как сделать скриншот программным Пользовательский аутентификатор учетной записи. Очистка после удаления учетной записи с устройства Как скопировать файлы из папки «assets» в SDCard? Режим хоста Android Отладка USB Андроид, как узнать, когда потеряно интернет-соединение?

PhoneGap не запускает deviceready на Android 4.2

Я создал приложение с create.bat в Windows и скомпилировал его с помощью ADT и последнего SDK.

Он запускает и отображает дисплей cordova, но он не запускает событие deviceready, поскольку он продолжает говорить «подключение к устройству». То же самое относится и к эмулятору. Он работает, когда я изменяю ОС на 4.0 для эмулятора.

Это нормально, потому что 4.2 только что был выпущен, и я должен ждать обновления?

Solutions Collecting From Web of "PhoneGap не запускает deviceready на Android 4.2"

Сейчас 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"); } 

У меня была такая же проблема на моем Nexus 7 с Android 4.2, но она работает, когда я изменяю AndroidManifest targetSdkVersion на «16»,

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

Надеюсь, это сработает для кого-то.

Диего

В моем случае автоматически сгенерированный index.html ссылался на phonegap.js

Поэтому вместо

 <script type="text/javascript" src="phonegap.js"></script> 

я кладу

 <script type="text/javascript" src="cordova.js"></script> 

По-видимому, это исправлено в 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 нет никаких ошибок.