package com.example.lenovo.myapplication.demo1; import android.accessibilityservice.AccessibilityService; import android.accessibilityservice.AccessibilityServiceInfo; import android.annotation.TargetApi; import android.app.Application; import android.app.Notification; import android.app.PendingIntent; import android.content.Context; import android.graphics.Rect; import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.support.annotation.RequiresApi; import android.util.Log; import android.view.KeyEvent; import android.view.View; import android.view.accessibility.AccessibilityEvent; import android.view.accessibility.AccessibilityManager; import android.view.accessibility.AccessibilityNodeInfo; import android.view.accessibility.AccessibilityWindowInfo; import com.example.lenovo.myapplication.log.LogShow; import java.io.IOException; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Set; /** * Created by lenovo on 2017/1/14. */ public class TestServer extends AccessibilityService { String tag="SSSSSD"; @TargetApi(Build.VERSION_CODES.KITKAT) @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN) @Override public void onAccessibilityEvent(AccessibilityEvent event) { int eventType = event.getEventType(); LogShow.soutShow("sdsdd"); LogShow.soutShow(event.getClassName()); LogShow.soutShow(event.getPackageName().toString()); LogShow.soutShow(event.getEventType()); CharSequence className = event.getClassName(); switch (eventType) { case AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED: // handleNotification(event); break; case AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED: /* inputClick("com.tencent.mm:id/f7"); openPacket("com.tencent.mm:id/a48"); String className = event.getClassName().toString(); if (className.equals("com.tencent.mm.ui.LauncherUI")) { openPacket("com.tencent.mm:id/a48"); // com.tencet.mm:/a56 } else if (className.equals("com.tencent.mm.plugin.luckymoney.ui.LuckyMoneyReceiveUI")) { inputClicka("com.tencent.mm:id/be_","com.tencent.mm:id/bed"); //bed } else if (className.equals("com.tencent.mm.plugin.luckymoney.ui.LuckyMoneyDetailUI")) { inputClick("com.tencent.mm:id/gr"); }*/ case AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED: // inputClick("com.tencent.mm:id/f7"); // inputClick("com.tencent.mm:id/f7"); String classNames = event.getClassName().toString(); logShow(classNames); if (classNames.equals("com.tencent.mm.ui.LauncherUI")) { // com.tencet.mm:/a56 } else if (classNames.equals("com.tencent.mm.plugin.luckymoney.ui.LuckyMoneyReceiveUI")) { inputClicka("com.tencent.mm:id/be_","com.tencent.mm:id/bed"); //退出或者点击 } else if (classNames.equals("com.tencent.mm.plugin.luckymoney.ui.LuckyMoneyDetailUI")) { inputClick("com.tencent.mm:id/gr"); //退出界面 } // openPacket("com.tencent.mm:id/a48"); getNodeValue(getRootInActiveWindow()); break; } } @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR2) @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN) private void getPvalue(String clickId){ AccessibilityNodeInfo nodeInfo = getRootInActiveWindow(); if (nodeInfo != null) { List<AccessibilityNodeInfo> list = nodeInfo.findAccessibilityNodeInfosByViewId(clickId); if (list.size()<1){ return; } /* for (AccessibilityNodeInfo item : list) { while (!item.isClickable()){ item=item.getParent(); } item.performAction(AccessibilityNodeInfo.ACTION_CLICK); return; }*/ } } @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN) private void getNodeValue( AccessibilityNodeInfo info){ // AccessibilityNodeInfo nodeInfo = getRootInActiveWindow(); // logShow(nodeInfo.getChildCount()+""); // logShow("111111111111"); if (info==null){ return; } if (info.getChildCount() == 0) { if(info.getText() != null){ /* if("微信红包".equals(info.getText().toString())){ //这里有一个问题需要注意,就是需要找到一个可以点击的View info.performAction(AccessibilityNodeInfo.ACTION_CLICK); AccessibilityNodeInfo parent = info.getParent(); while(parent != null){ if(parent.isClickable()){ parent.performAction(AccessibilityNodeInfo.ACTION_CLICK); return; } parent = parent.getParent(); } }else*/ if ("删除".equals(info.getText().toString())){ info.performAction(AccessibilityNodeInfo.ACTION_CLICK); AccessibilityNodeInfo parent = info.getParent(); while(parent != null){ if(parent.isClickable()){ parent.performAction(AccessibilityNodeInfo.ACTION_CLICK); return; } parent = parent.getParent(); } } else if ("删除该聊天".equals(info.getText().toString())){ info.performAction(AccessibilityNodeInfo.ACTION_CLICK); AccessibilityNodeInfo parent = info.getParent(); while(parent != null){ if(parent.isClickable()){ parent.performAction(AccessibilityNodeInfo.ACTION_CLICK); return; } parent = parent.getParent(); } } /* else if (!"微信红包".equals(info.getText().toString())){ info.performAction(AccessibilityNodeInfo.ACTION_LONG_CLICK); AccessibilityNodeInfo parent = info.getParent(); while(parent != null){ if(parent.isClickable()){ parent.performAction(AccessibilityNodeInfo.ACTION_LONG_CLICK); return; } parent = parent.getParent(); } }else { info.performAction(AccessibilityNodeInfo.ACTION_CLICK); AccessibilityNodeInfo parent = info.getParent(); while(parent != null){ if(parent.isClickable()){ parent.performAction(AccessibilityNodeInfo.ACTION_CLICK); return; } parent = parent.getParent(); } }*/ } } else { for (int i = 0; i < info.getChildCount(); i++) { if(info.getChild(i)!=null){ getNodeValue(info.getChild(i)); } } } } private void logShow(String value){ Log.v("logShowlogShow",value); } @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR2) private void inputClick(String clickId) { AccessibilityNodeInfo nodeInfo = getRootInActiveWindow(); if (nodeInfo != null) { List<AccessibilityNodeInfo> list = nodeInfo.findAccessibilityNodeInfosByViewId(clickId); if (list.size()>0&&list.size()<3){ for (AccessibilityNodeInfo item : list) { while (!item.isClickable()){ item=item.getParent(); } item.performAction(AccessibilityNodeInfo.ACTION_CLICK); return; } } } } @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR2) private void inputClicka(String clickId,String clickId1) { AccessibilityNodeInfo nodeInfo = getRootInActiveWindow(); if (nodeInfo != null) { List<AccessibilityNodeInfo> list = nodeInfo.findAccessibilityNodeInfosByViewId(clickId); List<AccessibilityNodeInfo> list1 = nodeInfo.findAccessibilityNodeInfosByViewId(clickId1); if (list!=null){ for (AccessibilityNodeInfo item : list) { item.performAction(AccessibilityNodeInfo.ACTION_CLICK); return; } } if (list1!=null) { for (AccessibilityNodeInfo item : list1) { item.performAction(AccessibilityNodeInfo.ACTION_CLICK); } } } } @Override public void onInterrupt() { } @RequiresApi(api = Build.VERSION_CODES.KITKAT) private void openPacket(String value) { AccessibilityNodeInfo nodeInfo = getRootInActiveWindow(); if (nodeInfo != null) { //为了演示,直接查看了红包控件的id List<AccessibilityNodeInfo> list = nodeInfo.findAccessibilityNodeInfosByViewId(value); if (list!=null&&list.size()>0){ if (lists.size()>0){ for (AccessibilityNodeInfo s:list) { int a=s.hashCode(); if (lists.contains(a)){ s.performAction(AccessibilityNodeInfo.ACTION_LONG_CLICK); lists.clear(); return; } } }else { lists.add(list.get(0).hashCode()); list.get(0).performAction(AccessibilityNodeInfo.ACTION_CLICK); return; } } } } public List<Integer> lists; Handler han=new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); Bundle data = msg.getData(); AccessibilityNodeInfo accessibilityNodeInfo= data.getParcelable("jason"); accessibilityNodeInfo.performAction(AccessibilityNodeInfo.ACTION_CLICK); } }; @Override protected void onServiceConnected() { super.onServiceConnected(); lists=new ArrayList<>(); } @Override public void onDestroy() { super.onDestroy(); // lists.removeAll(null); } } xml文件<?xml version="1.0" encoding="utf-8"?> <accessibility-service xmlns:android="http://schemas.android.com/apk/res/android" android:accessibilityEventTypes="typeAllMask" android:accessibilityFeedbackType="feedbackGeneric" android:accessibilityFlags="flagDefault" android:canRetrieveWindowContent="true" android:notificationTimeout="100" android:packageNames="com.tencent.mm" />manifast文件<service android:name="com.example.test.cache.weixxin.GoToWxin" android:enabled="true" android:exported="true" android:label="微信号LostBoyJason微信红包" android:description="@string/app_name" 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>
android 微信红包
最新推荐文章于 2021-05-29 01:33:53 发布