How to open the options menu programmatically?

前端 未结 11 1621
时光说笑
时光说笑 2020-11-28 06:47

I would like to open the optionsMenu programmatically without a click on the menu key from the user. How would I do that?

11条回答
  •  眼角桃花
    2020-11-28 06:53

    Two ways to do it:

    Activity.getWindow().openPanel(Window.FEATURE_OPTIONS_PANEL, event);
    

    The event argument is a KeyEvent describing the key used to open the menu, which can modify how the menu is displayed based on the type of keyboard it came from.

    Or... by simulating that the user has pressed the button:

    IWindowManager wManager = IWindowManager.Stub.asInterface(ServiceManager.getService("window"));
    KeyEvent kd = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_SOFT_LEFT);
    KeyEvent ku = new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_SOFT_LEFT);
    wManager.injectKeyEvent(kd.isDown(), kd.getKeyCode(), kd.getRepeatCount(), kd.getDownTime(), kd.getEventTime(), true);
    

提交回复
热议问题