打开微信就不用管了:

- 自动打开未读消息

- 自动滑动屏幕检测红包

- 自动跳过无效红包

基于Auto JS,apk版本4.01:

- 大多数动作均基于控件

- 极个别点击基于动态抓取的坐标

- 这就意味着不限机型或屏幕尺寸

使用说明:

- 安装auto.js apk

- 导入js脚本

- 在auto js设置中开启悬浮窗,因为懒得写控制逻辑了,直接用悬浮窗控制程序开始或结束

- 打开微信

逻辑思路和关联到的控件信息:

i. 检查是否有红包?循环上滑3次屏幕
ii. 点击红包消息
LinearLayout(clickable=true && depth=13 && id=atb)
iii. 检测红包是否可领?有无[开]
iv. 开红包【开】
Button(desc='开' && id=dan && depth=9)

v. 取得金额
TextView(depth=13 && id=d62 && text=【金额】)
vi. 返回聊天界面
LinearLayout(depth=7 && id=m0 && clickable=true)
vii. 返回微信首页
LinearLayout(depth=9 && id=lr && clickable=true)

主要代码逻辑 - 检测新红包/无效红包

Hints:

1. 如果一个控件本身无法通过click()点击,那么我们可以利用bounds()函数获取其坐标,再利用坐标点击。例如:
var b = desc("打开侧拉菜单").findOne().bounds();
click(b.centerX(), b.centerY());  //如果使用root权限,则用 Tap(b.centerX(), b.centerY());


2. 小心使用find(),findOne()等,注意仔细看原文档,否则会莫名其妙找不到控件或被阻塞

//please avoid to use findOne() as it will jam until get one UIObject
// we could use findOne(500) or findOnce() to instead if need

//搜索新红包并点开领取
function searchNewRedpacket(){
var rp_msg_list = className("android.widget.TextView").id('auk').find();
log("调试信息3" + rp_msg_list);
if(rp_msg_list.length != 0){
log("检测到的红包个数: " + rp_msg_list.length);
for(var i = 0; i < rp_msg_list.length; i++){
var rp_auk = rp_msg_list[i];
var rp_auk_parent = rp_auk.parent();
if(rp_auk_parent.childCount() == 1){
log("### 发现新红包");
var rpB = rp_auk_parent.bounds();
click(rpB.left, rpB.top, rpB.right, rpB.bottom);
log("成功打开红包消息");
openNewRedPacket();
sleep(1000);
}else if(i == (rp_msg_list.length - 1)){
log("当前页面已检测完");
break;
}else{
log("无效红包, 跳过");
}
}
}else if(rp_msg_list.empty()){
log("未检测到红包消息" + rp_msg_list.length);
}else{
return;
}
}

主要代码逻辑 -- 开红包

//领取点开的红包
function openNewRedPacket(){
var draw = desc("开").findOne(500);
log("调试信息2");
if(draw != null){
log("#### 点开新红包");
draw.click();
log("#### Gain a LUCKY succesfully!!!");
sleep(1000);
//领完返回聊天主页
back();
}else{
log("过期之类无效红包");
}
back();
log("返回成功");
}

今天忙的有点晕,就写这些了,需要完整代码的留言,改天抽空上传操作视频和源码到git。

PS: 写这个前后大概花了4晚上(2小时/晚),起因是老婆说他们公司老板经常发大红包她总是抢不到。。。

今晚估计可以让老婆加鸡腿了^_^

程序员过年必备 -- Auto.js微信自动抢红包的更多相关文章

  1. 10款Mac上程序员装机必备的开发工具推荐和下载

    10款Mac上程序员装机必备的开发工具推荐和下载 使用Mac的用户主要有两大类:设计师和程序员,为各位程序员童鞋推荐10个Mac上非常棒的开发工具和辅助工具,分享软件专题[10款Mac上程序员装机必备 ...

  2. 一步一步实现iOS微信自动抢红包

    微信红包 前言:最近笔者在研究iOS逆向工程,顺便拿微信来练手,在非越狱手机上实现了微信自动抢红包的功能.   此教程所需要的工具/文件 yololib class-dump dumpdecrypte ...

  3. Python/Java程序员面试必备常用问题解析与答案

    转自AI算法联盟,理解python技术问题,以及一些常见的java面试中经常遇到的问题,这些面试问题分为四类: 是什么(what) 如何做(how) 说区别/谈优势(difference) 实践操作( ...

  4. Java程序员面试必备:Volatile全方位解析

    前言 volatile是Java程序员必备的基础,也是面试官非常喜欢问的一个话题,本文跟大家一起开启vlatile学习之旅,如果有不正确的地方,也麻烦大家指出哈,一起相互学习~ 1.volatile的 ...

  5. 程序员面试必备经典CTCI,谷歌面试官经典作品!

    1.1 判断一个字符串中的字符是否唯一 1.2 字符串翻转 1.3 去除字符串中重复字符 1.8 利用已知函数判断字符串是否为另一字符串的子串 2.1 从链表中移除重复结点 2.2 实现一个算法从一个 ...

  6. 资深程序员推荐必备书籍 《C语言程序设计》

    当下,IT行业发展日趋迅猛,产值成倍增长,高薪的诱惑更是驱使许多人想要进入IT行业发展.为了使大家更全面理解C语言程序设计,由千锋教研院高教产品研发部编著.清华大学出版社倾情出版的<C语言程序设 ...

  7. 微信自动抢红包android实现

    AccessibilityService-微信自动抢红包 2018年02月01日 16:09:06 阅读数:1757 在领导发红包的时候,看到有些同事在1s.2s抢到红包,为什么他们能够这么快?一定是 ...

  8. iOS微信自动抢红包插件(支持后台和锁屏下抢红包)

    前言:本文主要讲述使用hook方式实现红包插件,涉及到tweak相关知识,如果你不想了解具体实现细节可直接到我的Github地址参考安装(包含越狱和非越狱两种方法)   转眼间2017即将过去,又到了 ...

  9. .NET程序员也学Node.js——初识Node.js

    清明在石门休了八天假,一眨眼,4月又到中旬了...看到.NET在天朝彻底沦陷而又无能为力,我开始尝试去学习一些新的东西来充实自己,我自然是打死不会去学java的,没有为什么,于是乎,最近开始学习一些前 ...

随机推荐

  1. 码云项目克隆至github

    个人博客 地址:http://www.wenhaofan.com/article/20181104211917 因为我的博客项目一开始是存放在码云上面的,但是我又想在GitHub上有该项目的提交记录, ...

  2. C++记录(二)

    1.算术移位和逻辑移位. 逻辑移位是只补0,算术移位是看符号,负数补1,正数补0(讨论的是右移的情况下). 负数左移右边一样补0.如果遇到位运算的相关题目需要对int变量进行左移而且不知道正负,那么先 ...

  3. 最短路(Dijkstra,Floyd,Bellman_Ford,SPFA)

    当然,这篇文章是借鉴大佬的... 最短路算法大约来说就是有4种——Dijkstra,Floyd,Bellman_Ford,SPFA 接下来,就可以一一看一下... 1.Dijkstra(权值非负,适用 ...

  4. python常用的正则表达式,持续更新<<

    # -*- coding: utf-8 -*- import re str_0 = 'Aqin1012Heheheaaaaaaahehe如何da' def re_str(re_str_0,str_0) ...

  5. 出现“无法在发送 HTTP 标头之后进行重定向”问题

    如题,在Response.Redirect之后会偶尔出现“无法在发送HTTP标头之后进行重定向”问题. 是因为,已经在出现错误的代码之前进行过一次重定向了.仔细检查代码即可. 解决方法:按照逻辑移除多 ...

  6. 页面回显与URL模板映射

    一.页面回显 对于需要返回界面的数据,可以将后台封装好的数据回显至原始jsp界面中. 举个例子: User.java package com.zk.data; public class User { ...

  7. [CCPC2019秦皇岛] E. Escape

    [CCPC2019秦皇岛E] Escape Link https://codeforces.com/gym/102361/problem/E Solution 观察到性质若干然后建图跑最大流即可. 我 ...

  8. TD-在http请求头上添加参数

    dojo.xhrGet({ url : url, timeout : easy7.timeout, headers: { iBaseToken: easy7.iBaseToken },

  9. linux异常 - unzip: 未找到命令

    问题描述 unzip: Command Not Found 或 zip: Command Not Found 或unzip: 未找到命令 解决方法 如果是Ubuntu的的系统可以用下面的命令安装:su ...

  10. 基于pyqt5的图片素材批量处理工具

    功能 分辨率的批量转换,文件夹递归查找 像素偏移量批量调整,文件夹单层查找 画布的大小的批量进行调整,不进行缩放,文件夹单层查找 界面 通过PyUIC生成的代码 # -*- coding: utf-8 ...