在PhoneGap for Android上捕获按键

xtr*_*ist 7 javascript events android 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;
Run Code Online (Sandbox Code Playgroud)

控制台说:

Line 1 : Uncaught TypeError: Cannot call method 'backTrigger' of undefined
Run Code Online (Sandbox Code Playgroud)

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

与KeyEvent也一样,没有运气!请帮忙!

提前致谢!:)

Reb*_*orn 7

有关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!');
}
Run Code Online (Sandbox Code Playgroud)

适用于PhoneGap 0.9.6

您还可以使用menubuttonsearchbutton事件处理其他按钮.


Sun*_*dey 1

如果您使用的 api 级别高于 2.0 那么您可以覆盖以下函数

@Override
public void onBackPressed() {
// do something on back.
return;
}
Run Code Online (Sandbox Code Playgroud)

用于跟踪后退按钮按下事件。

如果没有,那么您可以覆盖 Activity 的 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);
} 
Run Code Online (Sandbox Code Playgroud)