Вы можете поймать событие кнопки BACK в PhoneGap, но не кнопку HOME (это плохая практика для Android, поскольку существует явное ожидание пользователя независимо от того, какое приложение вы используете в отношении действия клавиши HOME: отправляет вас обратнона ваш домашний экран! Вы не хотите переопределять эту функцию).
Я направлю вас к фрагментам кода в PhoneGap (ПОСЛЕДНИЙ источник! вытащить из github для последней версии каркаса PhoneGap) для руководства.
Во-первых, существует Java-объект «BrowserKey», связанный с глобальным JavaScript «BackButton»:
http://github.com/phonegap/phonegap-android/blob/master/framework/src/com/phonegap/DroidGap.java#L291
Определение этого класса здесь: http://github.com/phonegap/phonegap-android/blob/master/framework/src/com/phonegap/BrowserKey.java
Первое, что вам нужно сделать в вашем приложении (я советую вам запускать его во время инициализации приложения), это дать нативной стороне фреймворка понять, что вы переопределяете функциональность кнопки BACK.Вы можете сделать это в JavaScript с помощью простого вызова:
BackButton.override();
С этого момента вы можете присоединить обработчик событий к событию backKeyDown документа, чтобы он выполнял логику при каждом нажатии кнопки BACK.Примерно так должно работать:
document.addEventListener('backKeyDown', function(e) {
alert('you hit the back key!');
}, false);
В качестве дополнения приведен код JavaScript, который оборачивает отправку события кнопки возврата: http://github.com/phonegap/phonegap-android/blob/master/framework/assets/js/keyevent.js
По сути, после вызова BackButton.override (), собственная сторона платформы будет вызывать window.keyEvent.backTrigger () каждый раз, когда нажимается кнопка BACK.