Intereting Posts
Android: TextView внутри ScrollView: как ограничить высоту Как изменить размер текста в местах autocompletefragment в android? Показать пользовательский смайлик в Android-клавиатуре ExpandableListView Group View Expand По умолчанию Мне нужны как Robolectric, так и Mockito в моем тесте, каждый из них предлагает свой собственный TestRunner ViewPager как круговая очередь / упаковка Как измерить наклон телефона в плоскости XY с помощью акселерометра в Android Возможно ли потерять соединение базы данных SQLite? Инициализация Android Realm в проекте Как уменьшить время, затрачиваемое MPAndroidChart для отображения данных? JQuery Mobile native не работает над дроидом Почему Android Lint предупреждает о том, что String.format использует стандартную локаль при явном использовании Locale.US? Как прокрутить tablayout программно – Android Множественный шрифт Не работает вовремя в приложении Как использовать карту google V2 внутри фрагмента?

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 нет никаких ошибок.