028-86922220

建站动态

根据您的个性需求进行定制 先人一步 抢占小程序红利时代

通过源码角度看看AccessibilityService-创新互联

简介

专业从事网站设计制作、成都网站设计,高端网站制作设计,小程序定制开发,网站推广的成都做网站的公司。优秀技术团队竭力真诚服务,采用H5高端网站建设+CSS3前端渲染技术,响应式网站,让网站在手机、平板、PC、微信下都能呈现。建站过程建立专项小组,与您实时在线互动,随时提供解决方案,畅聊想法和感受。

AccessibilityService的设计初衷是为了辅助有身体缺陷的群体使用Android应用,它的设计贯穿着Android的控件树View, ViewGroup, ViewRootImpl体系。借助于system_server进程的中转,能够注册Accessibility事件的客户端可以具备通过system_server提供的Accessibility服务来实现监听、操作其它应用视图的功能。这个功能十分强大,可以模拟用户的行为去操作其它APP,常常被用在自动化测试、微信抢红包、自动回复等功能实现中。

写这个的初衷有二:

整体图


类图

整体设计图

实例代码

public class AutoDismissService extends AccessibilityService {
 @Override
 public void onAccessibilityEvent(AccessibilityEvent event) {
 if (event == null) {
 return;
 }
 
 // 自动将android系统弹出的其它crash dialog取消
 dismissAppErrorDialogIfExists(event);
 }
 
 private void dismissAppErrorDialogIfExists(AccessibilityEvent event) {
 // WINDOW视图变化才进行对应操作
 if ((event.getEventType() == AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED
 && event.getPackageName().equals("android")) {
 // 查找带有"OK"字符的可点击Node
 AccessibilityNodeInfo nodeInfo = findViewByText("OK", true);
 if (nodeInfo != null) {
 // 查找到后执行点击操作
 performViewClick(nodeInfo);
 }
 }
 public AccessibilityNodeInfo findViewByText(String text, boolean clickable) {
 // 获取当前窗口父节点
 AccessibilityNodeInfo accessibilityNodeInfo = getRootInActiveWindow();
 if (accessibilityNodeInfo == null) {
 return null;
 }
 // 获取到满足字符要求的节点
 List 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;
 }
 // 由下至上进行查询,直到寻找到可点击的节点
 while (nodeInfo != null) {
 if (nodeInfo.isClickable()) {
 nodeInfo.performAction(AccessibilityNodeInfo.ACTION_CLICK);
 break;
 }
 nodeInfo = nodeInfo.getParent();
 }
 }
}

网站名称:通过源码角度看看AccessibilityService-创新互联
本文来源:http://www.tsicrk.com/article/djjigp.html

其他资讯

让你的专属顾问为你服务

2.3886s