【安卓开发】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中选择手机,点击红圈。(不一定能成功获取,多尝试)

48a6b34e97864074bc6b8e19c387c958.png

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

6328508e178449829011d0a4233332c6.png

 第三步:利用获取到的控件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中子AccessibilityNodeInfo执行performAction(AccessibilityNodeInfo.ACTION_CLICK)方法实现模拟点击。

    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下载地址:

看播便利助手

​​​​​​​完毕


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部