AccessibilityService如何实现微信发红包功能-创新互联

这篇文章主要介绍了AccessibilityService如何实现微信发红包功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

成都创新互联公司于2013年开始,先为龙泉驿等服务建站,龙泉驿等地企业,进行企业商务咨询服务。为龙泉驿企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

1.配置AccessibilityService,需要通过集成AccessibilityService来执行操作。

public class TestAccessibilityService extends AccessibilityService {  @Override  public void onAccessibilityEvent(AccessibilityEvent event) {    ...  }  @Override  public void onInterrupt() {    VirtualControlManager.getInstance().onCancel();  }}

使用时,需要在AndroidManifest.xml进行配置

           

在res文件夹下创建xml文件夹,存放accessibility_service_config.xml

         

这句话非常重要,后面会用到,切记

android:accessibilityFlags="flagDefault|flagRetrieveInteractiveWindows|flagIncludeNotImportantViews"

2.启动微信

Intent intent = new Intent(Intent.ACTION_MAIN);//  intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent//  .FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);        //加这个flag为了让微信能够进入的时候在会话列表        intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);        intent.addCategory(Intent.CATEGORY_LAUNCHER);        ComponentName cn = new ComponentName(“com.tencent.mm”, “com.tencent.mm.ui.LauncherUI”);        intent.setComponent(cn);        context.startActivity(intent);

网上很多启动微信的代码在setFlags中的参数都是我注释的那段,用那段确实可以启动微信,但是不能保证微信启动后就是最原始的消息列表,而是微信任何界面(用户上次操作微信停留的界面),这样在想做模拟点击的操作,要加好多的判断界面的代码和操作,那么能否我启动微信时一定在消息列表呢,答案是可以的,那就是用下面这个flag,在启动微信的时候肯定会到消息列表,省去了我们的操作。

Intent.FLAG_ACTIVITY_CLEAR_TOP

3.执行操作

通过AccessibilityService的onAccessibilityEvent(...)方法,我们可以获取到界面view的信息,用getRootInActiveWindow(),一步步通过view的id,来模拟操作,到发红包界面。

这里需要注意,微信在跳转到红包界面的时候是有一个dialog加载动画的,不少人在跳转到发红包界面时,通过getRootInActiveWindow()获取到的对象不是null就是节点信息不对,这是因为一个dialog快速加载过去了,部分机器能看一闪的效果,如果手机性能比较好,这个dialog可能就看不到,但是代码执行的时候就拿不到节点信息。

尝试过加延时,但是延时过后,onAccessibilityEvent方法不执行,还是等于没有。

这时候就需要用到开篇讲的了这段代码了:

android:accessibilityFlags="flagDefault|flagRetrieveInteractiveWindows|flagIncludeNotImportantViews"

加上这段代码后,我们就能通过onAccessibilityEvent来获取到发红包界面的view了,发一段在发红包界面填写金额的代码:

private void sendLuckMoney() {    AccessibilityNodeInfo rootInfo = accessibilityService.getRootInActiveWindow();    if (rootInfo != null) {      List nodeInfoList = rootInfo.findAccessibilityNodeInfosByViewId("com.tencent.mm:id/clu");      for (AccessibilityNodeInfo nodeInfo : nodeInfoList) {        Bundle arguments = new Bundle();        arguments.putCharSequence(AccessibilityNodeInfo.ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE, "10");        nodeInfo.performAction(AccessibilityNodeInfo.ACTION_SET_TEXT, arguments);      }    }  }

感谢你能够认真阅读完这篇文章,希望小编分享的“AccessibilityService如何实现微信发红包功能”这篇文章对大家有帮助,同时也希望大家多多支持创新互联网站建设公司,,关注创新互联行业资讯频道,更多相关知识等着你来学习!


文章名称:AccessibilityService如何实现微信发红包功能-创新互联
标题网址:http://pwwzsj.com/article/hiihp.html