在PhoneGap for Android上捕获按键

时间:2011-04-18 05:46:43

标签: javascript android events cordova

我正在使用PhoneGap进行Android应用程序开发,而我仍然停留在设备上捕获后退按键!我尝试了其他线程和官方维基页面上的所有内容,但似乎都没有用! :(

我可以使用keyEvent.menuTrigger和keyEvent.searchTrigger捕获菜单和搜索键,但似乎无法捕获后退按钮按下!我同样尝试了keyEvent.backTrigger,但它没有用!为'backKeyDown'事件添加事件监听器也不起作用!

这是我的代码:

BackButton.override();
    document.addEventListener('backKeyDown', function(e) {
  console.log('Caught it!');
}, false);
keyEvent.searchTrigger= searchPressed;
keyEvent.menuTrigger=menuPressed;
keyEvent.backTrigger=backPressed;

控制台说:

Line 1 : Uncaught TypeError: Cannot call method 'backTrigger' of undefined

这是不是意味着调用了something.backTrigger(),但是对象不存在。那是什么东西?或者有什么办法吗?

也和KeyEvent一样尝试过,没有运气! 请帮忙!

提前致谢! :)

3 个答案:

答案 0 :(得分:6)

关于Android按钮处理程序的

PhoneGap Wiki页面已针对PhoneGap 0.9.5进行了更新:

// This is your app's init method. Here's an example of how to use it
function init() {
    document.addEventListener("deviceready", onDR, false);
} 

function onDR(){
    document.addEventListener("backbutton", backKeyDown, true);
    //boot your app...
}

function backKeyDown() {
    // do something here if you wish
    // alert('go back!');
}

使用PhoneGap 0.9.6

为我工作

您还可以使用 menubutton 搜索按钮事件处理其他按钮。

答案 1 :(得分:1)

如果您使用的api级别高于2.0,那么您可以覆盖以下功能

@Override
public void onBackPressed() {
// do something on back.
return;
}

用于跟踪后退按钮事件。

如果没有,则可以覆盖活动的onKeyDown事件并跟踪后退按钮

@Override
public boolean onKeyDown(int keyCode, KeyEvent event)  {
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
        // do something on back.
        return true;
    }

    return super.onKeyDown(keyCode, event);
} 

答案 2 :(得分:1)

以下是我在PhoneGap w / xuijs中的表现:

// inside your 'deviceready' handler
if (device.platform == 'Android') {
    BackButton.override();

    // add backkeyDown handler
    x$(document).on('backKeyDown', onBackKeyDown);
}

// back button handler
function onBackKeyDown() {
    // do something
    // or
    // BackButton.exitApp();
}