
android 中用代码模拟发送按键有时候在代码中需要模拟一些用户操作的按键例如TV 中遥控器的按键一些测试脚本的编写。再比如android 手机中虚拟按键以及悬浮窗中的返回功能等等。都是模拟发送按键来操作。这里介绍三种方法来实现用代码模拟发送按键。目前我都是在系统中有系统签名和shareuid测试的。不知道如果第三方app想要调用使用。不知权限是否够1.调用input 命令使用过串口的都明白如果需要debug 模拟按键会使用input keyevent 的方法。这个使用android runtime 模拟执行命令try{StringkeyCommandinput keyevent KeyEvent.KEYCODE_1;RuntimeruntimeRuntime.getRuntime();Processprocruntime.exec(keyCommand);}catch(IOExceptione){}2.在线程中使用Instrumentation这个方法必须要在线程中执行才有效InstrumentationmInstnewInstrumentation();mInst.sendKeyDownUpSync(KeyEvent.KEYCODE_1);3.调用InputManager apiandroid 系统虚拟按键就是使用这种方法InputManager.getInstance().injectInputEvent 为隐藏方法如果不是在系统中使用则需要使用反射或者将源码导入app使其编译不报错。longnowSystemClock.uptimeMillis();KeyEventdownnewKeyEvent(now,now,KeyEvent.ACTION_DOWN,KeyEvent.KEYCODE_1,0);InputManager.getInstance().injectInputEvent(down,InputManager.INJECT_INPUT_EVENT_MODE_ASYNC);KeyEventupnewKeyEvent(now,now,KeyEvent.ACTION_UP,KeyEvent.KEYCODE_1,0);InputManager.getInstance().injectInputEvent(up,InputManager.INJECT_INPUT_EVENT_MODE_ASYNC);