0

I want to block a device's menu button press event.

So far I have used this code:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
    return (keyCode == KeyEvent.KEYCODE_MENU || super.onKeyDown(keyCode, event));
}

@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
    return (keyCode == KeyEvent.KEYCODE_MENU || super.onKeyUp(keyCode, event));
}

@Override
public boolean dispatchKeyEvent(KeyEvent event) {
    int keyCode = event.getKeyCode();
    int action = event.getAction();
    boolean isDown = action == 0;

    if (keyCode == KeyEvent.KEYCODE_MENU) {
        return isDown ? this.onKeyDown(keyCode, event) : this.onKeyUp(keyCode, event);
    }

    return super.dispatchKeyEvent(event);
}

When I press menu button methods onKeyDown, onKeyUp, dispatchKeyEvent are not called. And I see menu list.

Is there another way to block menu button?

PS: I use appcompat-v7:22

Ed Holloway-George
  • 5,092
  • 2
  • 37
  • 66

2 Answers2

1

Unfortunately AppCompat v22.2.1 broke the onKeyDown and onKeyUp events again. I just updated v22.2.1.

it is the problem.

zhaokang
  • 19
  • 4
  • If 22.2.1 broke the events and you updated to 22.2.1 you updated to the broken version? Are you sure that you didn't make a mistake? – bish Jul 30 '15 at 10:27
-1

The answer is:
MenuItem menuItem=menu.findItem(R.id.action_share);
(Note: id is of menu item)
menuItem.setEnabled(false);

AnswerDroid
  • 1,873
  • 2
  • 33
  • 52