monkey源码分析之事件注入方法变化(api16之后)
来源:互联网 发布:学生防网络诈骗漫画 编辑:程序博客网 时间:2024/05/21 09:55
在上一篇文章《Monkey源码分析之事件注入》中,我们看到了monkey在注入事件的时候用到了《Monkey源码分析番外篇之Android注入事件的三种方法比较》中的第一种方法,通过Internal API的WindowManager的injectKeyEvent之类的方法注入事件。这种方法在android api level 16也就是android4.1.2之后已经发生了变化:
- 在此之后注入事件的方式变成了使用InputManager的injectInputEvent方法了
- 而InputManager的getInstance和injectInputEvent等方法后来又变成了隐藏方法,具体哪个版本我没有去查,但起码我现在在看的Android 4.4.2是这样的
- 同样,uiautomator使用的注入事件方法用的也是InputManager的injectInputEvent的方法,这我想就是为什么UIAutomator只支持api level 16以后的android版本了
这里我们看下monkey在最新的版本API Level 19(android 4.4.2)的注入事件代码。
- /* */ public int injectEvent(IWindowManager iwm, IActivityManager iam, int verbose)
- /* */ {
- /* 101 */ if (verbose > 1) { String note;
- /* */ String note;
- /* 103 */ if (this.mAction == 1) {
- /* 104 */ note = "ACTION_UP";
- /* */ } else {
- /* 106 */ note = "ACTION_DOWN";
- /* */ }
- /* */ try
- /* */ {
- /* 110 */ System.out.println(":Sending Key (" + note + "): " + this.mKeyCode + " // " + MonkeySourceRandom.getKeyName(this.mKeyCode));
- /* */ }
- /* */ catch (ArrayIndexOutOfBoundsException e)
- /* */ {
- /* 114 */ System.out.println(":Sending Key (" + note + "): " + this.mKeyCode + " // Unknown key event");
- /* */ }
- /* */ }
- /* */
- /* */
- /* 119 */ KeyEvent keyEvent = this.mKeyEvent;
- /* 120 */ if (keyEvent == null) {
- /* 121 */ long eventTime = this.mEventTime;
- /* 122 */ if (eventTime <= 0L) {
- /* 123 */ eventTime = SystemClock.uptimeMillis();
- /* */ }
- /* 125 */ long downTime = this.mDownTime;
- /* 126 */ if (downTime <= 0L) {
- /* 127 */ downTime = eventTime;
- /* */ }
- /* 129 */ keyEvent = new KeyEvent(downTime, eventTime, this.mAction, this.mKeyCode, this.mRepeatCount, this.mMetaState, this.mDeviceId, this.mScanCode, 8, 257);
- /* */ }
- /* */
- /* */
- /* 133 */ if (!InputManager.getInstance().injectInputEvent(keyEvent, 1))
- /* */ {
- /* 135 */ return 0;
- /* */ }
- /* 137 */ return 1;
- /* */ }
- /* */ }
0 0
- monkey源码分析之事件注入方法变化(api16之后)
- monkey源码分析之事件注入方法变化
- monkey源码分析之事件注入方法变化
- Monkey源码分析之事件注入
- Monkey源码分析之事件注入
- Monkey源码分析番外篇之Android注入事件的三种方法比较
- Monkey源码分析番外篇之Android注入事件的三种方法比较
- 【android】Monkey源码分析、事件注入
- Monkey源码分析番外篇之WindowManager注入事件如何跳出进程间安全限制
- Monkey源码分析番外篇之WindowManager注入事件如何跳出进程间安全限制
- Monkey源码分析之事件源
- Monkey源码分析之事件源
- UiAutomator源码分析之注入事件
- 第6章7节《MonkeyRunner源码剖析》Monkey原理分析-事件源-事件源概览-注入按键事件实例
- android api16分析 SharedPreferences
- Monkey源码分析之运行流程
- Monkey源码分析之运行流程
- android Monkey测试源码分析之二
- ITer 你真的有职业规划吗?
- java基础巩固之反射(二)
- 【分数规划】【最优比率环 & 最优比率生成树】poj3621 Sightseeing Cows && poj2728 Desert King
- 概率论中几种常见的分布形式(二项分布,均匀分布和指数分布)
- Allowance (poj 3040 贪心)
- monkey源码分析之事件注入方法变化(api16之后)
- STM32CUBE学习——1
- C#面试题
- Dialog去掉白边和背景
- 社説 20150307 福島原発廃炉 リスク低減を着実に進めたい
- 进制数转换
- 菜鸟学习Spring——SpringIoC容器基于三种配置的对比
- 新东西004--XListview的使用
- 社説 20150307 「存立危機事態」 柔軟対処へ政府に裁量権残せ