public class QHBAccessibilityService extends AccessibilityService {
/**
* 当启动服务的时候就会被调用
*/
@Override
protected void onServiceConnected() {
super.onServiceConnected();
}
/**
* 监听窗口变化的回调
*/
@Override
public void onAccessibilityEvent(AccessibilityEvent event) {
int eventType = event.getEventType();
//根据事件回调类型进行处理
}
/**
* 中断服务的回调
*/
@Override
public void onInterrupt() {
}
}
<service android:name=".AccessibilityService.QHBAccessibilityService" android:enabled="true" android:exported="true" android:label="@string/label" android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE"> <intent-filter> <action android:name="android.accessibilityservice.AccessibilityService" /> </intent-filter> </service>
<service android:name=".AccessibilityService.QHBAccessibilityService" android:enabled="true" android:exported="true" android:label="@string/label" android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE"> <intent-filter> <action android:name="android.accessibilityservice.AccessibilityService" /> </intent-filter> <meta-data android:name="android.accessibilityservice" android:resource="@xml/accessibility_service_config" /> </service>
<?xml version="1.0" encoding="utf-8"?> <accessibility-service xmlns:android="http://schemas.android.com/apk/res/android" android:accessibilityEventTypes="typeNotificationStateChanged|typeWindowStateChanged|typeWindowContentChanged|typeWindowsChanged" android:accessibilityFeedbackType="feedbackGeneric" android:accessibilityFlags="flagDefault" android:canRetrieveWindowContent="true" android:description="@string/description" android:notificationTimeout="100" android:packageNames="com.tencent.mm" />
private void settingAccessibilityInfo() {
String[] packageNames = {"com.tencent.mm"};
AccessibilityServiceInfo mAccessibilityServiceInfo = new AccessibilityServiceInfo();
// 响应事件的类型,这里是全部的响应事件(长按,单击,滑动等)
mAccessibilityServiceInfo.eventTypes = AccessibilityEvent.TYPES_ALL_MASK;
// 反馈给用户的类型,这里是语音提示
mAccessibilityServiceInfo.feedbackType = AccessibilityServiceInfo.FEEDBACK_SPOKEN;
// 过滤的包名
mAccessibilityServiceInfo.packageNames = packageNames;
setServiceInfo(mAccessibilityServiceInfo);
}
Intent intent = new Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS); startActivity(intent);
@Override
public void onAccessibilityEvent(AccessibilityEvent event) {
int eventType = event.getEventType();
//根据事件回调类型进行处理
switch (eventType) {
//当通知栏发生改变时
case AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED:
break;
//当窗口的状态发生改变时
case AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED:
break;
}
}
//通过文本找到对应的节点集合 List<AccessibilityNodeInfo> list = nodeInfo.findAccessibilityNodeInfosByText(text); //通过控件ID找到对应的节点集合,如com.tencent.mm:id/gd List<AccessibilityNodeInfo> list = nodeInfo.findAccessibilityNodeInfosByViewId(clickId);
//模拟点击 accessibilityNodeInfo.performAction(AccessibilityNodeInfo.ACTION_CLICK); //模拟长按 accessibilityNodeInfo.performAction(AccessibilityNodeInfo.ACTION_LONG_CLICK); //模拟获取焦点 accessibilityNodeInfo.performAction(AccessibilityNodeInfo.ACTION_FOCUS); //模拟粘贴 accessibilityNodeInfo.performAction(AccessibilityNodeInfo.ACTION_PASTE);
/**
* =====作者=====
* 许英俊
* =====时间=====
* 2016/11/19.
*/
public class QHBAccessibilityService extends AccessibilityService {
private List<AccessibilityNodeInfo> parents;
/**
* 当启动服务的时候就会被调用
*/
@Override
protected void onServiceConnected() {
super.onServiceConnected();
parents = new ArrayList<>();
}
/**
* 监听窗口变化的回调
*/
@Override
public void onAccessibilityEvent(AccessibilityEvent event) {
int eventType = event.getEventType();
switch (eventType) {
//当通知栏发生改变时
case AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED:
List<CharSequence> texts = event.getText();
if (!texts.isEmpty()) {
for (CharSequence text : texts) {
String content = text.toString();
if (content.contains("[微信红包]")) {
//模拟打开通知栏消息,即打开微信
if (event.getParcelableData() != null &&
event.getParcelableData() instanceof Notification) {
Notification notification = (Notification) event.getParcelableData();
PendingIntent pendingIntent = notification.contentIntent;
try {
pendingIntent.send();
Log.e("demo","进入微信");
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
}
break;
//当窗口的状态发生改变时
case AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED:
String className = event.getClassName().toString();
if (className.equals("com.tencent.mm.ui.LauncherUI")) {
//点击最后一个红包
Log.e("demo","点击红包");
getLastPacket();
} else if (className.equals("com.tencent.mm.plugin.luckymoney.ui.LuckyMoneyReceiveUI")) {
//开红包
Log.e("demo","开红包");
inputClick("com.tencent.mm:id/bg7");
} else if (className.equals("com.tencent.mm.plugin.luckymoney.ui.LuckyMoneyDetailUI")) {
//退出红包
Log.e("demo","退出红包");
inputClick("com.tencent.mm:id/gd");
}
break;
}
}
/**
* 通过ID获取控件,并进行模拟点击
* @param clickId
*/
@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR2)
private void inputClick(String clickId) {
AccessibilityNodeInfo nodeInfo = getRootInActiveWindow();
if (nodeInfo != null) {
List<AccessibilityNodeInfo> list = nodeInfo.findAccessibilityNodeInfosByViewId(clickId);
for (AccessibilityNodeInfo item : list) {
item.performAction(AccessibilityNodeInfo.ACTION_CLICK);
}
}
}
/**
* 获取List中最后一个红包,并进行模拟点击
*/
private void getLastPacket() {
AccessibilityNodeInfo rootNode = getRootInActiveWindow();
recycle(rootNode);
if(parents.size()>0){
parents.get(parents.size() - 1).performAction(AccessibilityNodeInfo.ACTION_CLICK);
}
}
/**
* 回归函数遍历每一个节点,并将含有"领取红包"存进List中
*
* @param info
*/
public void recycle(AccessibilityNodeInfo info) {
if (info.getChildCount() == 0) {
if (info.getText() != null) {
if ("领取红包".equals(info.getText().toString())) {
if (info.isClickable()) {
info.performAction(AccessibilityNodeInfo.ACTION_CLICK);
}
AccessibilityNodeInfo parent = info.getParent();
while (parent != null) {
if (parent.isClickable()) {
parents.add(parent);
break;
}
parent = parent.getParent();
}
}
}
} else {
for (int i = 0; i < info.getChildCount(); i++) {
if (info.getChild(i) != null) {
recycle(info.getChild(i));
}
}
}
}
/**
* 中断服务的回调
*/
@Override
public void onInterrupt() {
}
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有