Android DroidGap禁用后退按钮

时间:2013-04-05 12:59:36

标签: android cordova back-button

请有人建议,在使用PhoneGap时如何禁用后退按钮事件?

我需要在我的Activity,(DroidGap代码)中执行某些操作来控制后退按钮事件。

即便如此,以下代码也适用于Activity,但在与DroidGap一起使用时无效。

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
     if (keyCode == KeyEvent.KEYCODE_BACK) {
         //preventing default implementation previous to android.os.Build.VERSION_CODES.ECLAIR
         return true;
     }
     return super.onKeyDown(keyCode, event);    
}

5 个答案:

答案 0 :(得分:7)

setOnKeyListener上拨打appView帮助了我。

我只需要对上面的代码段进行一些小改动,如下所示:

appView.setOnKeyListener(new OnKeyListener() { 
    public boolean onKey(View v, int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            return true;
        }
        return onKeyDown(keyCode, event); 
    } 
});

<强> EDITED

按键事件实际上发生了两个动作 - Action Up&amp; Action Down

因此,应该使用以下内容来获取关键事件。

appView.setOnKeyListener(new OnKeyListener() { 
    public boolean onKey(View v, int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_UP) {
            // Do Here whatever you want 
            return true;
        }
        return onKeyDown(keyCode, event); 
    } 
});

答案 1 :(得分:5)

略好于Narendra的版本。它可以正确处理按键以外的键按键。例如,将下面的代码放在onCreate override中。

appView.setOnKeyListener(new View.OnKeyListener() { 

        public boolean onKey(View v, int keyCode, KeyEvent event) {
            if (event.getAction() == KeyEvent.ACTION_UP) {
                if(keyCode == KeyEvent.KEYCODE_BACK) {
                    // Do Stuff Here
                    return true;
                }
                return onKeyUp(keyCode, event);
            }
            return onKeyDown(keyCode, event); 
        } 
   });

答案 2 :(得分:2)

就我而言,我使用Javascript + jquery如下:

$(document).on('backbutton',
     function(e){

         e.preventDefault();

         // do whatever you like here.

});

答案 3 :(得分:0)

// ************ stop the back button  *****************

public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {

        return true;
    }
    return super.onKeyDown(keyCode, event);
}

答案 4 :(得分:0)

if (keyCode == KeyEvent.KEYCODE_BACK) {

    return true;
}