简体   繁体   English

在PhoneGap for Android上捕获按键

[英]Capturing back key press on PhoneGap for Android

I am using PhoneGap for Android Application development and I'm stuck at capturing the back key press on the device! 我正在使用PhoneGap进行Android应用程序开发,而我却停留在设备上捕获后退按键! I tried everything from other threads and from the official wiki page but none seem to work! 我尝试了其他线程和官方维基页面上的所有内容,但似乎都没有用! :( :(

I could capture menu and search keys with keyEvent.menuTrigger and keyEvent.searchTrigger but can't seem to capture the back button press! 我可以使用keyEvent.menuTrigger和keyEvent.searchTrigger捕获菜单和搜索键,但似乎无法捕获后退按钮按下! I tried keyEvent.backTrigger similarly but it didn't work! 我同样尝试了keyEvent.backTrigger,但它没有用! Adding event listener for 'backKeyDown' event doesn't work either! 为'backKeyDown'事件添加事件监听器也不起作用!

Here's my code: 这是我的代码:

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

The console says: 控制台说:

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

Doesn't that mean something.backTrigger() is being called but the object something doesn't exist. 这是不是意味着调用了something.backTrigger(),但是对象不存在。 What is that something? 那是什么东西? Or is there any way around? 或者有什么办法吗?

Tried the same with KeyEvent too, with no luck! 与KeyEvent也一样,没有运气! Please help! 请帮忙!

Thanks in advance! 提前致谢! :) :)

PhoneGap Wiki page about Android button handler has been updated for PhoneGap 0.9.5 : 有关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!');
}

Works for me with PhoneGap 0.9.6 适用于PhoneGap 0.9.6

You can also handle others buttons with menubutton and searchbutton events. 您还可以使用menubuttonsearchbutton事件处理其他按钮。

if you are using api level above 2.0 then u can override following function 如果你使用api级别高于2.0,那么你可以覆盖以下功能

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

for tracking back button pressed event. 跟踪按下按钮事件。

if not then you can override onKeyDown event of activity and track back button 如果没有,那么您可以覆盖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);
} 

Here's how I do it in PhoneGap w/ xuijs: 这是我在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();
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM