10

Please, anyone suggest, how can I disable back button press event while working with PhoneGap?

I need to do something in my Activity, (DroidGap code) for controlling the back button event.

Even, the following code works well in my Activity, but not working when being used with 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);    
}
tshepang
  • 12,111
  • 21
  • 91
  • 136
Narendra Singh
  • 3,990
  • 5
  • 37
  • 78

5 Answers5

7

Calling setOnKeyListener on appView helped me out.

I just had to make a minor change in my above code snippet, which is as follows:

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

There actually occurs two actions while key-pressing event - Action Up & Action Down

So, the following should be used in order to get the key event.

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); 
    } 
});
stealthjong
  • 10,858
  • 13
  • 45
  • 84
Narendra Singh
  • 3,990
  • 5
  • 37
  • 78
5

Slightly better than Narendra's version. It can handle key up calls for key presses other than back button properly. Put the code below inside onCreate override for example.

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); 
        } 
   });
mentat
  • 2,748
  • 1
  • 21
  • 40
2

In my case, I use Javascript + jquery like so:

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

         e.preventDefault();

         // do whatever you like here.

});
wmfairuz
  • 1,033
  • 10
  • 19
0
// ************ stop the back button  *****************

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

        return true;
    }
    return super.onKeyDown(keyCode, event);
}
Rishi Gautam
  • 1,948
  • 3
  • 21
  • 31
0
if (keyCode == KeyEvent.KEYCODE_BACK) {

    return true;
}
nielsbot
  • 15,922
  • 4
  • 48
  • 73
Malupet
  • 1
  • 4