Android模拟按键

cal*_*k33 22 java android key keypress simulate

如何以编程方式模拟Droid上的按键?我想模仿一个手动按键(出现在机器人上,有人按下一个键,但它是以编程方式完成的).

有解决方案涉及IWindowManager,但在新SDK中不再是一个选项.

mar*_*inj 38

您可以使用检测,即从您的活动的onCreate调用的代码将导致菜单多次打开和关闭:

    new Thread(new Runnable() {         
        @Override
        public void run() {
            try {
            Instrumentation inst = new Instrumentation();
            for ( int i = 0; i < 10; ++i ) {
                inst.sendKeyDownUpSync(KeyEvent.KEYCODE_MENU);
                Thread.sleep(2000);
                inst.sendKeyDownUpSync(KeyEvent.KEYCODE_BACK);
                Thread.sleep(2000);
            }
            }
            catch(InterruptedException e){
            }
        }   
    }).start();
Run Code Online (Sandbox Code Playgroud)

......但我不确定这是不是你所追求的

  • 这正是我正在寻找的但是...不是严格用于测试的仪器吗?我正在寻找一种解决方案,我可以在实时应用中使用,而不是测试.提前致谢. (4认同)
  • 需要 INJECT_EVENTS 权限,该权限仅适用于系统应用程序。 (3认同)

tpa*_*sny 6

如果您有一个想要使用该事件的视图,则可以使用BaseInputConnection类及其sendKeyEvent方法.

要使用它,您需要指定将接收KeyEvent的目标视图(例如EditText).例如:

EditText editText;
BaseInputConnection inputConnection = new BaseInputConnection(editText, true);
inputConnection.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_POUND));
Run Code Online (Sandbox Code Playgroud)

这样的结果就像用户实际按#键(同时编辑文本聚焦).

  • 这让我想知道,您是否还需要调度“KeyEvent.ACTION_UP”。我想这样做是合乎逻辑的。 (2认同)