Захват собственных нажатий кнопок в телефоне Android в JavaScript - PullRequest
7 голосов
/ 31 августа 2010

Есть ли способ, которым мы можем зафиксировать нажатие кнопки HOME и BACK в html-файле в приложении для Android с помощью phonegap / jqtouch / javascript?

У меня есть приложение для Android с использованием phonegap.Я хочу зафиксировать щелчок по кнопке «ДОМАШНЯЯ» и «НАЗАД» на телефоне Android на странице html, чтобы грациозно выйти / вернуться.

Ответы [ 3 ]

10 голосов
/ 05 сентября 2010

Вы можете поймать событие кнопки 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.

4 голосов
/ 26 июля 2011

Этот пример кода работает для PhoneGap 0.9.5 и более поздних версий (проверено на 0.9.6):

    document.addEventListener("menubutton", function () { 
        alert('Menu button');
    }, false);  

    document.addEventListener("searchbutton", function () { 
        alert('Search button');
    }, false);                      

    document.addEventListener("backbutton", function () { 
        alert('Back button');
    }, false);  

Кнопка Home не может быть обработана. Это зарезервировано системой.

0 голосов
/ 03 сентября 2010

У меня есть приложение для Android, использующее телефонный разрыв.Я хочу зафиксировать щелчок по кнопке «ДОМАШНЯЯ» и «НАЗАД» на телефоне Android на странице html, чтобы грациозно выйти / вернуться.

...