转载请注明作者AndroidMSky和链接http://blog.csdn.net/AndroidMsky/article/details/53490459
又是兴趣系列
网上有很多自动强红包的例子和代码,笔者也是做了一些优化。
先说说自己的两个个优势
1.可以在聊天界面自动强不依赖于通知栏推送
2.可以在屏幕熄灭的时候的时候点亮屏幕自动抢(目前只测过flyme)
先上图:
代码传送门:
https://github.com/AndroidMsky/WXhongbao
欢迎点星星~
微信6.3.32体验APK(支持所有机型)
https://github.com/AndroidMsky/WXhongbao/raw/master/6.3.32.apk
微信6.5.3体验APK( 目前部分新款6.0.1手机不可用。无法识别推送)
通过对6.0.1 MIUI的小米max进行测试发现微信6.5.3采用的通知栏并不是标准的通知栏。
通过:
case AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED:
是无法检测到红包通知的。
而使用安卓5.0.1 Flyme os 4.5.7A的MX2 可以监听到通知,并正确开启红包,大胆想象:最新版本的微信对通知进行了处理,如果第三方ROM支持这种自己开发的通知栏(非原声通知栏)那么微信就使用这种通知栏进行消息的通知,我们的AccessibilityService就难以监控到了,如果ROM没有自己开发的通知栏,那么还用系统的通知栏,那么就可以监控的到并正确强红包,目前看如果想强红包的还是建议暂时不要升级6.5.3
https://github.com/AndroidMsky/WXhongbao/raw/master/hongbao6.5.3.apk
回到正题
原理:
通过AccessibilityService监听到状态栏通知,进行模拟点击,获取屏幕中view节点为领取红包的list并且点击最后一个。
如果不通过状态栏通知,通过视图变化AccessibilityEvent的2048事件也是就
public static final int TYPE_WINDOW_CONTENT_CHANGED = 0x00000800;
每次接受到新消息都会有这个时间的回调:
public void onAccessibilityEvent(AccessibilityEvent event) {
int eventType = event.getEventType();
if (auto)
Log.e("AAAAAAAA",