最近在使用心悦俱乐部这个APP,里面有个代币叫G分,可以换游戏道具,但需要每天领取,比较繁琐。于是索性做一个自动领取G分的辅助,姑且叫它G分助手吧。
1. 查看包名和当前Activity
首先使用adb shell连接上手机。在启动应用之后,输入dumpsys activity activities命令查看当前的Activity。
image.png
可以看到,包名是com.tencent.tgclub,欢迎页是WelcomeActivity,主页面是MainActivity。
2. 查看当前应用布局,View的id等
在Android sdk目录下,有一个tools文件夹。这之中有一个monitor工具,也就是之前的DDMS。连接手机到电脑之后,通过monitor即可看到当前应用界面的布局了。
点击dump view hierarchy
当前应用布局.png
通过monitor工具,我们就可以获取到想要点击View的id,从而为实现模拟点击做好准备。
3. AccessibilityService的配置
Accessibility Service的教程 上一搜一大把,很简单,这里就不赘述了。
AccessibilityService的xml配置文件如下:
android:accessibilityEventTypes=”typeWindowStateChanged|typeWindowContentChanged|typeViewClicked”
android:accessibilityFeedbackType=”feedbackGeneric”
android:accessibilityFlags=”flagReportViewIds|flagRequestEnhancedWebAccessibility|flagRetrieveInteractiveWindows”
android:canRequestEnhancedWebAccessibility=”true”
android:canRetrieveWindowContent=”true”
android:canPerformGestures=”true”
android:description=”@string/app_name”
android:notificationTimeout=”10″
android:packageNames=”com.tencent.tgclub” />
其中特别要指出的是,flagRequestEnhancedWebAccessibility这一项,是为了操作WebView中的内容的。最坑的地方在于,在api 26中这个flag就被废弃了,而且我并没有找到替代方法。也就是说,在Android O以后的手机很可能就不能用这个方式了,而且竟然没有可以替代的方式!(只能用Android 7及以前的手机暂时苟一下)
uml1
最后,创建一个TaskManager的单例类,统一管理任务,将职责从AccessibilityService中分割出来。
umllast
4.3 最终代码
虽然因为手里没有Android 7测试样机,具体功能的实现没有办法继续写下去了,不过大体框架已经完成,剩下的内容就是往里面写各个任务的业务逻辑了,甚至根据需求可以添加其他任务。
Github地址是https://github.com/LittleFogCat/gpointhelper,有兴趣的可以自己改着玩。(不过我相信没有人会坚持看到这里。)
事实上,写到这里,我已经不想领G分了。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!