Intereting Posts
Когда я запускаю проект, возникает такая ошибка Android: при изменении цвета фона EditText изменение стиля EditText Различные способы отправки значений json на сервер Переход обратно в FragmentPagerAdapter -> фрагменты пустые Android – как startActivity или startActivityForResult повлияет на логический поток текущей активности? Ширина и цвет границы элемента списка ListView для Android ViewPager с фрагментами внутри PopupWindow (или DialogFragment) – ошибка не найдена для id для фрагмента Android Gradle создает TransformException: java.util.zip.ZipException: ошибка при открытии zip-файла во время transformClassesWithDexForRelease XML-парсер для динамической компоновки (динамически загруженные скины) При изменении ориентации экрана создается новая активность Сортировка Android strings.xml в алфавитном порядке Facebook Connect / phonegap – параметр «nativeInterface» в вызове FB.init, что он делает? Добавить проект не-Android-библиотеки в приложение для Android в Eclipse Android: проблема с намерениями Таймер просмотра списка Android запускается каждую секунду

Как запретить Android закрывать веб-приложение при нажатии кнопки?

Я разрабатываю веб-приложение HTML5 и компилирую его с помощью Cordova (phonegap) 1.7.

Я хочу переопределить Android backbutton, чтобы я мог вызвать window.history.back () вместо закрытия приложения (по умолчанию Android). Как я могу запретить Android убивать нажатие кнопки по умолчанию на задней кнопке?

Я получаю кнопку «Назад нажата !!!!» В logcat, поэтому метод запускается до закрытия приложения.

Это то, что у меня есть до сих пор:

// Wait for Cordova to load // document.addEventListener("deviceready", onDeviceReady, false); // Cordova is ready // function onDeviceReady() { document.addEventListener("backbutton", function(e) { console.log("Back button pressed!!!!"); window.history.back(); }, false); } 

EDIT: Я готов принять ответ, объясняющий способ имитации window.history.back () непосредственно из класса DefaultActivity.java android, если это возможно!

Я решил свой вопрос, добавив код ниже в файл DefaultActivity.java чтобы предотвратить поведение по умолчанию для Android и сохранив код JavaScript, как указано в вопросе:

 @Override public void onBackPressed() { return; } 

Надеюсь, это поможет кому-то в будущем с той же проблемой!

Я придерживался такого подхода. Я зацепил событие подставки, как вы показали. Я смотрю, если это первая страница или нет, а затем спросите пользователя, хотят ли они выйти из программы или нет. Это зависит от того, что вы хотите, чтобы ваша программа работала в зависимости от ее состояния. Я не добавил переопределение, как вы показали; Мне это, похоже, не нужно.

 if ($.mobile.activePage.attr('id') === 'firstpage') { // Prompt to confirm the exit } else { window.history.back(); } 

Если они хотят выйти, вы можете позвонить:

 navigator.app.exitApp(); 

Для закрытия вашей программы.

Я предполагаю, что вы все равно хотите разрешить пользователю выйти из вашего приложения. Я не склонен использовать приложения, которые не позволяют сделать какой-либо выход.

Надеюсь, что это помогает вам.

Никогда не приходилось это делать, но пытались ли вы return true ?

Как и в Java SDK, если вы вернете True , система предположит, что вы правильно поймали событие и больше не передаете его другим слушателям событий.