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

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

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

Я нажимаю кнопку "Назад" !!!! & quot; в logcat, поэтому метод запускается до закрытия приложения.

Это то, что я до сих пор:

<code>        // 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);

        }
</code>

РЕДАКТИРОВАТЬ: Я готов принять ответ, объясняющий способ моделирования window.history.back () непосредственно из класса Android DefaultActivity.java, если это возможно!

 Simon MacDonald30 апр. 2012 г., 16:37
Этот код должен работать. Где вы взяли 1.7 версию PG, так как она еще не выпущена. Вы строите из github?
 Sindre30 апр. 2012 г., 19:55
К сожалению, код не работает: /
 Paul Beusterien30 апр. 2012 г., 17:42
@ SimonMacDonald 1.7rc1 выпущен на сайте download.phonegap.com в прошлый четверг. Видеть Phonegap.com / 2012/04/26 / 1-7-0rc1 выпустили

Ответы на вопрос(3)

Решение Вопроса

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

@Override
public void onBackPressed() {
   return;
}

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

 kctang26 мая 2012 г., 03:34
Я использую PhoneGap 1.7, и это, кажется, единственный подход, который работает. Тем не менее, я бы предпочел не нативное решение, чтобы оно работало на таких вещах, как сборка PhoneGap. Помощь очень ценится.
 Suman Sapkota28 июл. 2014 г., 13:15
Я также попробовал тот же код ... но теперь он не закрывает приложение и не возвращает назад .... кнопка "Назад" отключена .... можете ли вы предложить мне исправить это, чтобы я мог вернуться к последней посещенной странице

return true ?

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

 Sindre30 апр. 2012 г., 19:56
Да, я пытался. Но это, к сожалению, не сработало. Я также просто печатаю на консоль, и не делаю back (), но он все еще завершается. Weird

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

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

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

navigator.app.exitApp();

закрыть вашу программу.

Я думаю, вы все еще хотите разрешить пользователю выходить из приложения. Я не склонен использовать приложения, которые не разрешают выход.

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

Ваш ответ на вопрос