设计思路:调用Android系统自带的AccessibilityService服务监控手机消息状态(为了防止受其他非微信类消息的干扰,设置只监控“com.tencent.mm”的包名;为了保证可以兼容多种情况下可以抢到到红包,如锁屏状态下、不在微信界面下、在微信主界面下、群屏蔽下、聊天界面出现连续的红包雨等情况,需设置监控状态有TYPE_NOTIFICATION_STATE_CHANGED (通知栏变化)、TYPE_WINDOW_CONTENT_CHANGED(界面内容变化)、TYPE_WINDOW_STATE_CHANGED(窗口体变化)然后根据状态变化出现“[微信红包]”的文字,则调用AccessibilityService的ACTION_CLICK模拟点击进入红包界面并领取,完成自动抢红包的操作;最后执行GLOBAL_ACTION_BACK返回聊天界面。
程序流程图:
代码解析:
(1)在MainActivity跳转到手机无障碍模式界面,提示用户打开AccessibilityService服务
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); try { //打开系统设置中辅助功能 Intent intent = new Intent(android.provider.Settings.ACTION_ACCESSIBILITY_SETTINGS); startActivity(intent); Toast.makeText(this, "group04_抢红包APP->开启", Toast.LENGTH_SHORT).show(); } catch (Exception e) { e.printStackTrace(); } }}