Android Accessibility 的簡單用法

Accessbility 又叫做輔助功能崎淳,是Android官方推出幫助身體不便或者操作不靈活的人來輔助操作的翼雀,也可以用來干一些別的事徒探,比如自動搶紅包啊葬荷,靜默安裝點擊啊等已知或者未知的應用坑夯。出于某種需求岖寞,就研究了下這個功能的簡單用法,先做一個模擬按鈕點擊的效果柜蜈。
布局很簡單仗谆,就不貼代碼了指巡,簡單描述下,主界面就一個按鈕隶垮,id隨便你取藻雪,在Activity中設置點擊事件,彈出一個Toast狸吞。

步驟
  1. 創(chuàng)建CheckAccessbilityServices:
    CheckAccessbilityServices 繼承自AccessibilityService勉耀,并在清單文件applcation節(jié)點中配置,并加入權限
    <service
    android:name=".CheckAccessbilityServices"
    android:enabled="true"
    android:exported="true"
    android:label="測試點擊"
    android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE">
    <intent-filter>
    <action android:name="android.accessibilityservice.AccessibilityService" />
    </intent-filter>
    <meta-data
    android:name="android.accessibilityservice"
    android:resource="@xml/check_accessibility_config" />
    </service>
    2.在res目錄下創(chuàng)建文件夾xml蹋偏,并創(chuàng)建步驟一中check_accessibility_config.xml
    <accessibility-service xmlns:android="http://schemas.android.com/apk/res/android" android:description="@string/check_click"
    android:packageNames="com.notrace"
    android:accessibilityEventTypes= "typeAllMask|typeViewClicked|typeViewFocused|typeNotificationStateChanged|typeWindowStateChanged"
    android:accessibilityFlags="flagDefault"
    android:accessibilityFeedbackType="feedbackSpoken"
    android:notificationTimeout="100"
    android:canRetrieveWindowContent="true" />
    這里面有一些常用的屬性便斥,簡單介紹下
    android:accessibilityEventTypes="typeAllMask"
    看屬性名也差不多可以明白,這個是用來設置響應事件的類型威始,typeAllMask當然就是響應所有類型的事件了枢纠。當然還有單擊、長按字逗、滑動等京郑。
    android:accessibilityFeedbackType="feedbackSpoken"
    設置回饋給用戶的方式

       android:notificationTimeout="100"
    

響應時間的設置就不用多說了
android:packageNames="com.notrace"
可以指定響應某個應用的事件,我的demo包名就叫com.notrace,可以多個葫掉,用","隔開。
android:description="模擬點擊"

描述你在系統(tǒng)輔助功能開關中看到的描述

3.CheckAccessbilityServices 實現onAccessibilityEvent和onInterrupt方法

                @Override  
            public void onAccessibilityEvent(AccessibilityEvent event) {  
                      //過濾包名
                      String pkgName = event.getPackageName().toString();    
                      if(!"com.notrace".equals(pkgName))
                            return;
                    switch (type){  
                          case AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED:      
                      //切換頁面的時候此時會觸發(fā)一個叫TYPE_WINDOW_STATE_CHANGED的事件
                        AccessibilityNodeInfo nodeInfo = getRootInActiveWindow(); 
                       if(nodeInfo!=null)  {
                           if("com.notrace.MainActivity".equals(event.getClassName())){    
                                List<AccessibilityNodeInfo>     list=
                                nodeInfo.findAccessibilityNodeInfosByViewId("com.notrace:id/btn_click");
                          if(list!=null&&list.size()>0)  {        
                          list.get(0).performAction(AccessibilityNodeInfo.ACTION_CLICK);       
                           }        
                      }       
                       break;   
                   case AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED:   
                     break;
                  }                     
           }  

注意這里有個叫com.notrace:id/btn_click的俭厚,就是前面的那個按鈕户魏,我取id叫btn_click,這個東西可以通過eclipse提供的一個工具dump查看,如下圖:

QQ截圖20160808162014.png

微信搶紅包的界面你就可以這么看了叼丑。
list.get(0).performAction(AccessibilityNodeInfo.ACTION_CLICK); 就是模擬點擊事件

至此鸠信,模擬點擊就已經全部完成了星立,我們打開手機輔助功能界面會看見:


QQ截圖20160808162331.png

點擊進去:


QQ截圖20160808162434.png

打開這個開關就可以了。
至此火焰,當頁面切換到MainActivity中就可以彈出toast了劲装,至于別的奇奇怪怪的功能,就需要小伙伴們自己摸索了。
Demo代碼

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末占业,一起剝皮案震驚了整個濱河市绒怨,隨后出現的幾起案子,更是在濱河造成了極大的恐慌纺酸,老刑警劉巖窖逗,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異餐蔬,居然都是意外死亡碎紊,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進店門樊诺,熙熙樓的掌柜王于貴愁眉苦臉地迎上來仗考,“玉大人,你說我怎么就攤上這事词爬⊥菏龋” “怎么了?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵顿膨,是天一觀的道長锅锨。 經常有香客問我,道長恋沃,這世上最難降的妖魔是什么必搞? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮囊咏,結果婚禮上恕洲,老公的妹妹穿的比我還像新娘。我一直安慰自己梅割,他們只是感情好霜第,可當我...
    茶點故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著户辞,像睡著了一般泌类。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上底燎,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天刃榨,我揣著相機與錄音,去河邊找鬼书蚪。 笑死喇澡,一個胖子當著我的面吹牛迅栅,可吹牛的內容都是我干的殊校。 我是一名探鬼主播,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼读存,長吁一口氣:“原來是場噩夢啊……” “哼为流!你這毒婦竟也來了呕屎?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤敬察,失蹤者是張志新(化名)和其女友劉穎秀睛,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體莲祸,經...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡蹂安,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了锐帜。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片田盈。...
    茶點故事閱讀 38,566評論 1 339
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖缴阎,靈堂內的尸體忽然破棺而出允瞧,到底是詐尸還是另有隱情,我是刑警寧澤蛮拔,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布述暂,位于F島的核電站,受9級特大地震影響建炫,放射性物質發(fā)生泄漏畦韭。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一踱卵、第九天 我趴在偏房一處隱蔽的房頂上張望廊驼。 院中可真熱鬧,春花似錦惋砂、人聲如沸妒挎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽酝掩。三九已至,卻和暖如春眷柔,著一層夾襖步出監(jiān)牢的瞬間期虾,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工驯嘱, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留镶苞,地道東北人。 一個月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓鞠评,卻偏偏與公主長得像茂蚓,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,440評論 2 348

推薦閱讀更多精彩內容