android 中用代码模拟发送按键

转载:android 中用代码模拟发送按键

android 中用代码模拟发送按键

有时候在代码中需要模拟一些用户操作的按键,例如TV 中遥控器的按键,一些测试脚本的编写。再比如android 手机中虚拟按键,以及悬浮窗中的返回功能,等等。都是模拟发送按键来操作。

这里介绍三种方法,来实现用代码模拟发送按键。目前我都是在系统中(有系统签名和shareuid)测试的。不知道如果第三方app想要调用使用。不知权限是否够

1.调用input 命令

使用过串口的都明白,如果需要debug 模拟按键,会使用input keyevent 的方法。这个使用android runtime 模拟执行命令

try{
            String keyCommand = "input keyevent " + KeyEvent.KEYCODE_1;
            Runtime runtime = Runtime.getRuntime();
            Process proc = runtime.exec(keyCommand);
} catch(IOException e){
}

2.在线程中使用Instrumentation

这个方法必须要在线程中执行才有效

Instrumentation mInst = new Instrumentation();
mInst.sendKeyDownUpSync(KeyEvent.KEYCODE_1);

3.调用InputManager api(android 系统虚拟按键就是使用这种方法)

InputManager.getInstance().injectInputEvent 为隐藏方法,如果不是在系统中使用,则需要使用反射,或者将源码导入app,使其编译不报错。

long now = SystemClock.uptimeMillis();
KeyEvent down = new KeyEvent(now, now, KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_1, 0);
InputManager.getInstance().injectInputEvent(down, InputManager.INJECT_INPUT_EVENT_MODE_ASYNC);
KeyEvent up = new KeyEvent(now, now, KeyEvent.ACTION_UP, KeyEvent.KEYCODE_1, 0);
InputManager.getInstance().injectInputEvent(up, InputManager.INJECT_INPUT_EVENT_MODE_ASYNC);

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值