Android DroidGap禁用后退按钮

Nar*_*ngh 10 android back-button cordova

请任何人建议,如何在工作时禁用后退按钮事件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);    
}
Run Code Online (Sandbox Code Playgroud)

Nar*_*ngh 7

调用setOnKeyListenerappView帮了我.

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

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

EDITED

按键事件实际上发生了两个动作 - Action Up&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); 
    } 
});
Run Code Online (Sandbox Code Playgroud)


men*_*tat 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); 
        } 
   });
Run Code Online (Sandbox Code Playgroud)