目录
用 [TOC]
来生成目录:
- 目录
- 简介
- 配置
- 实操
- 抢红包思路
-
-
- 监听微信应用发出的Notification检查字段是否有微信红包字段
- 点击Notification进入微信界面
- 调用getRootInActiveWindow获取根节点
- 调用findAccessibilityNodeInfosByText领取红包获取该节点
- 调用performActionAccessibilityNodeInfoACTION_CLICK实现模拟点击
- 坑点
- 包被混淆之前通过Android Device Monitor查看ID然后根据findAccessibilityNodeInfosByID去匹配节点包被混淆之后每个版本不一样
- 很难找出没有文本的控件如EditTextImageView
- 锁屏抢红包要解除锁屏isKeyguardLocked方法错误理解刚开始写代码的时候默认检测是否有锁屏如果锁屏了调用disableKeyguard解锁然后再检测是否真正解锁成功解锁之后再进行抢红包的逻辑后面发现disableKeyguard并不是真正能够解锁只是隐藏了锁屏
-
-
简介
AccessibilityService是一个辅助类,可以监听我们手机的焦点,窗口变化,按钮点击等等。实现它的服务需要在手机设置里面->辅助功能在这里面找到你自己实现的辅助类,然后打开它就可以进行我们一系列的监听了。还可以对监听的对象进行一些脚本的操作。
配置
Manifest.xml配置
新建一个类继承AccessibilityService,并在AndroidManifest文件里注册它,加入对应的Intent-filter,表明是一个辅助服务,同时加入相应的权限.
<application>
<service android:name=".MyAccessibilityService"
android:label="@string/accessibility_service_label">
<intent-filter>
<action android:name="android.accessibilityservice.AccessibilityService" />
</intent-filter>
</service>
<uses-permission android:name="android.permission.BIND_ACCESSIBILITY_SERVICE" />
</application>
配置辅助服务
在代码中配置
一般在onServiceConnected()方法里进行
private void setServiceInfo(int feedbackType) {
AccessibilityServiceInfo info = new AccessibilityServiceInfo();
// We are interested in all types of accessibility events.
info.eventTypes = AccessibilityEvent.TYPES_ALL_MASK;
// We want to provide specific type of feedback.
info.feedbackType = feedbackType;
// We want to receive events in a certain interval.
info.notificationTimeout = EVENT_NOTIFICATION_TIMEOUT_MILLIS;
// We want to receive accessibility events only from certain packages.
info.packageNames =