簡(jiǎn)介
專(zhuān)業(yè)從事網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站設(shè)計(jì),高端網(wǎng)站制作設(shè)計(jì),小程序定制開(kāi)發(fā),網(wǎng)站推廣的成都做網(wǎng)站的公司。優(yōu)秀技術(shù)團(tuán)隊(duì)竭力真誠(chéng)服務(wù),采用H5高端網(wǎng)站建設(shè)+CSS3前端渲染技術(shù),響應(yīng)式網(wǎng)站,讓網(wǎng)站在手機(jī)、平板、PC、微信下都能呈現(xiàn)。建站過(guò)程建立專(zhuān)項(xiàng)小組,與您實(shí)時(shí)在線互動(dòng),隨時(shí)提供解決方案,暢聊想法和感受。AccessibilityService的設(shè)計(jì)初衷是為了輔助有身體缺陷的群體使用Android應(yīng)用,它的設(shè)計(jì)貫穿著Android的控件樹(shù)View, ViewGroup, ViewRootImpl體系。借助于system_server進(jìn)程的中轉(zhuǎn),能夠注冊(cè)Accessibility事件的客戶(hù)端可以具備通過(guò)system_server提供的Accessibility服務(wù)來(lái)實(shí)現(xiàn)監(jiān)聽(tīng)、操作其它應(yīng)用視圖的功能。這個(gè)功能十分強(qiáng)大,可以模擬用戶(hù)的行為去操作其它APP,常常被用在自動(dòng)化測(cè)試、微信搶紅包、自動(dòng)回復(fù)等功能實(shí)現(xiàn)中。
寫(xiě)這個(gè)的初衷有二:
整體圖
類(lèi)圖
整體設(shè)計(jì)圖
實(shí)例代碼
public class AutoDismissService extends AccessibilityService { @Override public void onAccessibilityEvent(AccessibilityEvent event) { if (event == null) { return; } // 自動(dòng)將android系統(tǒng)彈出的其它c(diǎn)rash dialog取消 dismissAppErrorDialogIfExists(event); } private void dismissAppErrorDialogIfExists(AccessibilityEvent event) { // WINDOW視圖變化才進(jìn)行對(duì)應(yīng)操作 if ((event.getEventType() == AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED && event.getPackageName().equals("android")) { // 查找?guī)в?OK"字符的可點(diǎn)擊Node AccessibilityNodeInfo nodeInfo = findViewByText("OK", true); if (nodeInfo != null) { // 查找到后執(zhí)行點(diǎn)擊操作 performViewClick(nodeInfo); } } public AccessibilityNodeInfo findViewByText(String text, boolean clickable) { // 獲取當(dāng)前窗口父節(jié)點(diǎn) AccessibilityNodeInfo accessibilityNodeInfo = getRootInActiveWindow(); if (accessibilityNodeInfo == null) { return null; } // 獲取到滿(mǎn)足字符要求的節(jié)點(diǎn) List<AccessibilityNodeInfo> nodeInfoList = accessibilityNodeInfo.findAccessibilityNodeInfosByText(text); if (nodeInfoList != null && !nodeInfoList.isEmpty()) { for (AccessibilityNodeInfo nodeInfo : nodeInfoList) { if (nodeInfo != null && (nodeInfo.isClickable() == clickable)) { return nodeInfo; } } } return null; } public void performViewClick(AccessibilityNodeInfo nodeInfo) { if (nodeInfo == null) { return; } // 由下至上進(jìn)行查詢(xún),直到尋找到可點(diǎn)擊的節(jié)點(diǎn) while (nodeInfo != null) { if (nodeInfo.isClickable()) { nodeInfo.performAction(AccessibilityNodeInfo.ACTION_CLICK); break; } nodeInfo = nodeInfo.getParent(); } } }
標(biāo)題名稱(chēng):通過(guò)源碼角度看看AccessibilityService-創(chuàng)新互聯(lián)
分享路徑:http://muchs.cn/article18/djjigp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、App設(shè)計(jì)、響應(yīng)式網(wǎng)站、網(wǎng)站營(yíng)銷(xiāo)、網(wǎng)站改版、服務(wù)器托管
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容