如何完美实现微信自动发朋友圈&自动添加好友&等等

如何完美实现微信自动发朋友圈&自动添加好友&等等,第1张

要实现微信自动化,大致有这么几种办法

这些方法各有利弊,综合看来,第一种实现总会有一天微信说要关闭web服务,那岂不是很惨,第二种风险在于被封号,只有第三种目前看来最合适,想要自动发送朋友圈,AccessibilityService是最完美的实现。知其然知其所以然,我们要想用好AccessibilityService,就要明白其原理,这样能更好的理解每一步 *** 作的含义,少走弯路,避免考虑不周导致成功率不足。

在做的过程中,也遇到很多问题,例如经常拿不到

AccessibilityNodeInfo实例,如果拿不到就无法 *** 作当前界面的元素,等于是无法再执行下去了,这里有几个关键点需要注意的,只要注意这几个就可以完美拿到。卖个关子,下面会提到,请往下看。

先大致了解下原理,对你的使用更是事半功倍。

类图源于 here

该类又继承了 IAccessibilityServiceClient.Stub ,并实现了 HandlerCaller.Callback 接口。看到这分析出,这是一个跨进程通信Service,在IAccessibilityServiceClientWrapper构造函数中看到 Callbacks 回调接口

看到这里再回头看看onBind函数的具体实现如图

而这个函数又是谁调的呢,这里就到了进程间通信的逻辑,看一下外部逻辑,上面是倒推逻辑,下面正推一下。

AccessibilityService跟一个监控一样,界面的所有的事件都可以收到,那它的源头肯定在View上,肯定在View的事件处理上,跟着这个逻辑去找一下

在performClick函数中发现有一个AccessibilityEvent事件传递,再往里面跟踪发现了这个有用的信息

这里面可以清晰的看到,你收到的AccessibilityEvent事件所有的字段赋值逻辑就在这里。那它是如何发出去交给AccessibilityService呢,肯定是通过AIDL,进一步查找源码

发现在sendAccessibilityEventUncheckedInternal函数中,调用了

getParent().requestSendAccessibilityEvent(this, event),接着看看这个getParent()干了什么,找了一圈找到具体实现在哪,最终在ViewRootImpl中找到这个方法实现

可以看到是mAccessibilityManager.sendAccessibilityEvent 发出了事件,再看下这个函数的实现逻辑

IAccessibilityManager 是个aidl接口,最终通过他发送给了服务

看到这是不是明白了其中的原理。在AccessibilityService你还可以拿到Activity的一些信息,同样的道理,你在源码中肯定能找到那个实现,你可以试着自己去搜一下。

上面卖的关子,现在可以圆满了,在使用中遇到过很多种情况拿不到RootInActiveWindow 也就是AccessibilityNodeInfo(表示窗口内容的节点),当窗口能拿到这个节点时,你才能通过他去findView,所以你知道它的重要性了,但为什么很多时候拿不到呢

如果在TYPE_WINDOWS_CHANGED中就会拿不到

当你不在当前页面(com.tencent.mm.ui.LauncherUI是微信的主页)时同样也有可能获取不到,有可能是在其他页面。

读到这是不是想看如何实现呢,这里直接提供项目源码,并没有写如何使用的教程,推荐给你们几个写的特别详细的教程,希望对你有帮助,使用起来相对很简单的,看完这些文章基本够用

Android自动化模拟 *** 作开源库源码解析

你真的理解AccessibilityService吗

AccessibilityService分析与防御

A complete guide to Accessibility Service Part 1 — Android

A Complete Guide to Accessibility Service Part 2 — Android

本项目源码完善中,功能上会加入

好友类里面包括姓名 联系方式 邮箱等等

class Friend{

String name

String contact

String email

Friend(String name,String contact,String email){

构造函数

}

getter

setter

}

上面只是个雏形自己完善

用一个ArrayList<Friend>来储存所有的Friends

取,删或者增直接调用ArrayList的函数

用swing来显示所有的好友。。for循环读取ArrayList

然后批量加入swing GUI显示就行

可以用JTable或者直接用JPanel等等

struct people *p1,*p2

struct people *head

struct people *p

struct people *head

struct x *p1

两个函数的这些指针,在使用前都没有初始化,或赋值

使其指向的内存单元不确定,造成崩溃


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11914250.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存