autojs获取短信验证码
时间: 2023-11-10 22:52:59 浏览: 36
在AutoJS中获取短信验证码需要使用到Android的AccessibilityService服务,具体实现步骤如下:
1. 在AutoJS中新建一个脚本文件,引入Android的AccessibilityService服务:
```
var serviceName = "autojs.accessibility.AccessibilityService";
var service = null;
if (!auto.service) {
service = className(serviceName).findOne();
if (!service) {
console.error("服务未开启,请手动打开无障碍服务并运行脚本!");
exit();
}
} else {
service = auto.service;
}
```
2. 打开短信应用并等待短信到来:
```
app.startActivity({
action: "android.intent.action.MAIN",
category: "android.intent.category.DEFAULT",
packageName: "com.android.mms",
className: "com.android.mms.ui.ConversationList"
});
var smsCode = waitForSMS();
```
3. 实现waitForSMS函数,等待短信到来并获取验证码:
```
function waitForSMS() {
var smsCode = "";
var msg = "";
var lastMsg = "";
while (true) {
msg = getLastSMS();
if (msg != lastMsg) {
lastMsg = msg;
smsCode = getCode(msg);
if (smsCode) {
break;
}
}
sleep(1000);
}
return smsCode;
}
function getLastSMS() {
var smsContent = "";
var smsNode = null;
var smsList = className("android.widget.ListView").findOne();
if (!smsList) {
return "";
}
var smsCount = smsList.getChildCount();
if (smsCount == 0) {
return "";
}
smsNode = smsList.getChildAt(0);
if (!smsNode) {
return "";
}
smsContent = smsNode.desc();
return smsContent;
}
function getCode(msg) {
var pattern = /【验证码】(\d{6})/;
var code = pattern.exec(msg);
if (code && code.length > 1) {
return code[1];
}
return "";
}
```
4. 最后获取到的短信验证码保存在smsCode变量中,可以在之后的代码中使用。
注意:使用AccessibilityService服务需要开启AutoJS的无障碍服务,而且不同的Android版本可能需要不同的设置,具体请参考AutoJS官方文档。