【安卓开发】AccessibilityService学习,实现辅助点击功能
第一步:配置xml文件和AccessibilityService
在res下新建xml文件夹并在其中新建accessibility_service_config.xml文件,下面是配置这个xml的代码示例
创建继承AccessibilityService的类,并在AndroidManifest.xml中注册和配置
第二步:获取界面里的控件属性
执行模拟点击,你首先需要获取目标App界面里的控件id,获取这些元素的方法有很多,下面介绍两种。
1.真机获取,使用Android Studio 3.0以后弃用Android Device Monitor,如果你的AS版本大于3.0,那么你可以在sdk的安装目录下找到tools文件夹,并在其中找到monitor.bat并打开。在monitor中选择手机,点击红圈。(不一定能成功获取,多尝试)

2.使用模拟器+Layout Inspector(模拟器已root,可随意获取)

第三步:利用获取到的控件id,执行模拟点击
在继承AccessibilityService类中重写的onAccessibilityEvent(AccessibilityEvent event)方法里获取根AccessibilityNodeInfo
@Overridepublic void onAccessibilityEvent(AccessibilityEvent event) {int eventType = event.getEventType();switch (eventType) {case AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED:AccessibilityOperate.getOperate().updateEvent(this, event);AccessibilityNodeInfo nodeInfo = FloatDialogService.this.getRootInActiveWindow();break;}}
利用我们找到的控件id以及根AccessibilityNodeInfo的findAccessibilityNodeInfosByViewId(viewId)方法找到控件的List
让控件的List
public boolean performClick(List nodeInfo) {AccessibilityNodeInfo node;for (int i = 0; i < nodeInfo.size(); i++) {node = nodeInfo.get(i);if (node.isEnabled() && node.isClickable()) {if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {return node.performAction(AccessibilityNodeInfo.ACTION_CLICK);}}}return false;}
判断控件的List
public boolean isTargetViewShow(List infos) {if (infos != null && infos.size() > 0) {return true;}return false;}
你能找到的控件id,以及具体点击顺序,可以根据自己喜好来设定。
demo下载地址:利用AccessibilityService实现抖Y直播间自动秒抢红包Demo-Android文档类资源-CSDN下载
App下载地址:
看播便利助手
完毕
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
