亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Android > 正文

Android中三種注入事件方法比較

2020-04-11 11:39:46
字體:
來源:轉載
供稿:網友

方法1:使用內部APIs

該方法和其他所有內部沒有向外正式公布的APIs一樣存在它自己的風險。原理是通過獲得WindowManager的一個實例來訪問injectKeyEvent/injectPointerEvent這兩個事件注入方法。

復制代碼 代碼如下:

IBinder wmbinder = ServiceManager.getService( "window" );
IWindowManager m_WndManager = IWindowManager.Stub.asInterface( wmbinder );

ServiceManager和Windowsmanager被定義為存根Stubs類。我們根據我們的需要綁定上這些服務并訪問里面的方法。 To send a key do the following: 通過以下方式發送一個事件:
復制代碼 代碼如下:

// key down
m_WndManager.injectKeyEvent( new KeyEvent( KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_A ),true );
// key up
m_WndManager.injectKeyEvent( new KeyEvent( KeyEvent.ACTION_UP, KeyEvent.KEYCODE_A ),true );
 
發送touch/mouse事件:
復制代碼 代碼如下:

//pozx goes from 0 to SCREEN WIDTH , pozy goes from 0 to SCREEN HEIGHT
m_WndManager.injectPointerEvent(MotionEvent.obtain(SystemClock.uptimeMillis(),
SystemClock.uptimeMillis(),MotionEvent.ACTION_DOWN,pozx, pozy, 0), true);
m_WndManager.injectPointerEvent(MotionEvent.obtain(SystemClock.uptimeMillis(),
SystemClock.uptimeMillis(),MotionEvent.ACTION_UP,pozx, pozy, 0), true);

這種方法能在你的應用中很好的工作,但,也僅僅只能在你的應用中而已

一旦你想要往其他窗口注入keys/touch事件,你將會得到一個強制關閉的消息:

方法2: 使用instrumentation對象

  相對以上的隱藏接口和方法,這個是比較干凈(上面的是隱藏的,故需要用到android不干凈不推薦的方法去獲?。┑姆绞剑恍业氖滤廊挥猩厦娴腏INECT_EVENTS這個只有系統應用(基本上就是android自己提供的,如monkey)才被允許的權限問題。

復制代碼 代碼如下:

Instrumentation m_Instrumentation = new Instrumentation();
m_Instrumentation.sendKeyDownUpSync( KeyEvent.KEYCODE_B );

以下是觸摸事件實例:
復制代碼 代碼如下:

//pozx goes from 0 to SCREEN WIDTH , pozy goes from 0 to SCREEN HEIGHT
m_Instrumentation.sendPointerSync(MotionEvent.obtain(SystemClock.uptimeMillis(),
SystemClock.uptimeMillis(),MotionEvent.ACTION_DOWN,pozx, pozy, 0);
m_Instrumentation.sendPointerSync(MotionEvent.obtain(SystemClock.uptimeMillis(),
SystemClock.uptimeMillis(),MotionEvent.ACTION_UP,pozx, pozy, 0);

在應用內操作的話完全沒有問題,但一旦跳出這個應用去觸發按鍵事件的話就會崩潰。不是因為這個方法不工作,而是因為android開發人員做了限制。謝謝你們,android的開發者們,你牛逼!個屁。

  通過分析sendPointerSync的對應代碼,可以看到其實instrumentation使用到的注入事件方式其實和方法一提到的通過WindowManager.injectPointerEvents是一樣的,所以穿的都是同一條內褲,只是Robotium出來走動的時候套上條時尚喇叭褲,而以上直接調用WindowManager的方式就猶如只穿一條內褲出街的區別而已。

復制代碼 代碼如下:

public void sendPointerSync(MotionEvent event) {
validateNotAppThread();
try {
(IWindowManager.Stub.asInterface(ServiceManager.getService("window")))
.injectPointerEvent(event, true);
} catch (RemoteException e) {
}
}

方法3:直接注入事件到設備/dev/input/eventX

linux以系統設備的方式向用戶暴露了一套統一的事件注入接口/dev/input/eventX(其中X代表一個整數)。我們可以直接跳用而跳過以上的平臺(android這個機遇linux的平臺)限制問題。但是這需要工作的話,你需要rooted過的設備。

設備文件eventX默認是被設置為660這個權限的(Owner和同組成員有讀寫,而owner是root)。為了向這個設備注入事件,你必須讓它能可寫。所以請先做以下動作:

復制代碼 代碼如下:

adb shell
su
chmod 666 /dev/input/event3

你將需要root權限來運行chmod命令。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久精品视频成人| 中文字幕在线精品| 欧洲精品在线视频| 亚洲丝袜在线视频| 成人在线精品视频| 久久99亚洲精品| 91久久中文字幕| 国产性猛交xxxx免费看久久| 国产精品一区二区三区成人| 日韩欧美国产黄色| 在线亚洲欧美视频| 精品久久久久久久中文字幕| 97在线观看视频国产| 精品视频在线导航| 亚洲天堂色网站| 亚洲女成人图区| 精品成人久久av| 久久久精品一区| 亚洲精品国产欧美| 亚洲伊人第一页| 亚洲国产美女精品久久久久∴| 91在线播放国产| 夜夜嗨av色综合久久久综合网| 麻豆乱码国产一区二区三区| 久久精品中文字幕电影| 日韩av观看网址| 国产精品海角社区在线观看| 国产一区二区三区高清在线观看| 一区二区三区无码高清视频| 一本大道香蕉久在线播放29| 91在线网站视频| 国产精品18久久久久久首页狼| 亚洲美女av在线| 国产精品视频久久久| 欧美极品少妇xxxxⅹ免费视频| 亚洲国产三级网| 亚洲国产免费av| 操人视频在线观看欧美| 国产97在线|亚洲| 68精品久久久久久欧美| 欧美日韩国产精品一区二区不卡中文| 国产精品免费在线免费| www.亚洲一二| 亚洲黄色免费三级| 日韩精品中文字幕有码专区| 国产精品777| 亚洲精品永久免费精品| 亚洲日本中文字幕免费在线不卡| 亚洲国产精品va在线观看黑人| 日韩欧美高清在线视频| 成人性生交大片免费看小说| 亚洲区免费影片| 欧美国产日韩一区二区在线观看| 亚洲网站在线观看| 1769国产精品| 国产91精品在线播放| 欧美第一黄网免费网站| 亚洲电影免费在线观看| 北条麻妃一区二区三区中文字幕| 国产精品影片在线观看| 国产精品爱久久久久久久| 亚洲国产精品免费| 久久久久久久色| 久久国产天堂福利天堂| 国产成人+综合亚洲+天堂| 中文字幕亚洲在线| 欧美国产乱视频| 精品国产精品三级精品av网址| 久久久国产影院| 国产欧美va欧美va香蕉在| 91福利视频网| 中文字幕久久久| 亚洲人成电影在线播放| 国产精品久久久久久亚洲影视| 日韩免费av片在线观看| 97视频免费观看| 欧美激情精品久久久久| 欧美日韩一区二区免费视频| 国产精品精品国产| 精品国产91久久久久久老师| 91在线直播亚洲| 亚洲毛片在线观看| 中文字幕亚洲欧美| 国产91露脸中文字幕在线| 欧美乱妇高清无乱码| 亚洲视频欧洲视频| 亚洲的天堂在线中文字幕| 日韩在线欧美在线国产在线| 国产成人自拍视频在线观看| 成人免费自拍视频| 久久av红桃一区二区小说| 深夜精品寂寞黄网站在线观看| www.美女亚洲精品| 日本一区二区在线免费播放| 欧美日韩国产中文字幕| 国产欧美va欧美va香蕉在线| 日韩精品免费在线播放| 精品国产一区二区三区四区在线观看| 91经典在线视频| 91亚洲一区精品| 欧亚精品中文字幕| 成人性生交大片免费看视频直播| 这里只有精品视频| 日韩av在线免费看| 国产69精品久久久久9| 亚洲国产另类 国产精品国产免费| 久久精品国产精品| 欧美激情一级精品国产| 精品激情国产视频| 日韩在线免费av| 97免费视频在线| 国产精品久久久久久久久粉嫩av| 日韩欧美亚洲综合| 九九热这里只有精品6| 国产不卡av在线免费观看| 97视频在线免费观看| 亚洲天天在线日亚洲洲精| 亚洲第一级黄色片| 成人国产精品一区二区| 日韩免费观看高清| 国产视频在线一区二区| 国产视频亚洲精品| 成人黄色在线播放| 欧美激情国产精品| www欧美xxxx| 亚洲欧美成人网| 日韩av在线资源| 国a精品视频大全| 久久色在线播放| 亚洲最大福利网| 中文字幕日韩综合av| 欧美成人免费va影院高清| 91精品在线观看视频| 中文字幕日韩专区| 人妖精品videosex性欧美| 国产精品欧美日韩久久| 成人h猎奇视频网站| 91精品久久久久久| 亚洲自拍在线观看| 亚洲人成自拍网站| 91精品久久久久久综合乱菊| 亚洲综合视频1区| 超碰日本道色综合久久综合| 日韩av最新在线观看| 欧美成人免费全部观看天天性色| 国产精品第一视频| 成人黄色片在线| 亚洲一区亚洲二区| 国内精久久久久久久久久人| 国产精品色婷婷视频| 国产美女精品视频| 亲子乱一区二区三区电影| 91精品国产自产在线老师啪| 亚洲黄色免费三级| 97香蕉超级碰碰久久免费软件| 国产成人一区三区| 91沈先生在线观看| 精品视频一区在线视频| 欧美日韩亚洲一区二区| 日韩有码在线观看| 美乳少妇欧美精品| 51ⅴ精品国产91久久久久久| 日韩欧美有码在线| 精品久久久999|