您好,登錄后才能下訂單哦!
在上一篇文章《Monkey源碼分析之事件注入》中,我們看到了monkey在注入事件的時候用到了《Monkey源碼分析番外篇之Android注入事件的三種方法比較》中的第一種方法,通過Internal API的WindowManager的injectKeyEvent之類的方法注入事件。這種方法在android api level 16也就是android4.1.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; /* */ } /* */ }可以看到最后的注入事件方法從原來的iwm.injectKeyEvent變成了現在的Inputmanager.getInstance().injectInputEvent方法了。
作者 | 自主博客 | 微信 | CSDN |
天地會珠海分舵 | http://techgogogo.com | 服務號:TechGoGoGo 掃描碼:
| 向AI問一下細節 推薦閱讀:
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。 猜你喜歡最新資訊相關推薦相關標簽AI
助 手
改则县|
红河县|
正镶白旗|
宜阳县|
中山市|
梓潼县|
新龙县|
抚顺市|
油尖旺区|
甘谷县|
安丘市|
罗田县|
桦甸市|
和田县|
江陵县|
花莲市|
儋州市|
古田县|
马鞍山市|
临沧市|
通道|
怀柔区|
太仆寺旗|
漯河市|
新乡县|
岳阳市|
清远市|
开平市|
临邑县|
五大连池市|
大石桥市|
洮南市|
泗水县|
青冈县|
海安县|
正蓝旗|
天等县|
柳林县|
忻城县|
利津县|
温泉县|
|