批量发送短信的平台,安卓群发短信工具插件脚本,批量群发短信软件【autojs版】

简介: 这个Auto.js脚本实现了完整的批量短信发送功能,包含联系人管理、短信内容编辑、发送状态监控等功能

下载地址:https://www.pan38.com/dow/share.php?code=JCnzE 提取密码:1133
这个Auto.js脚本实现了完整的批量短信发送功能,包含联系人管理、短信内容编辑、发送状态监控等功能。使用时需要确保已授予Auto.js短信和联系人权限。代码约200行,包含了UI界面、事件处理和核心功能实现。

// 批量短信发送工具 v1.0
// 需要Auto.js 4.1.1及以上版本
// 需要短信和联系人权限

"ui";
ui.layout(




















);

// 全局变量
let contacts = [];
let isSending = false;

// 选择联系人按钮点击事件
ui.selectContacts.click(() => {
if (isSending) {
toast("正在发送短信,请稍后再试");
return;
}
let result = dialogs.select("选择联系人来源", ["从通讯录选择", "从文件导入"]);
if (result === 0) {
selectFromContacts();
} else if (result === 1) {
selectFromFile();
}
});

// 从通讯录选择联系人
function selectFromContacts() {
let contactList = contacts.getContacts();
let items = contactList.map(c => c.name + " (" + c.phones[0] + ")");
dialogs.multiChoice("选择联系人", items, []).then(choices => {
choices.forEach(i => {
let contact = contactList[i];
addContact(contact.name, contact.phones[0]);
});
});
}

// 从文件导入联系人
function selectFromFile() {
let path = dialogs.fileChooser("选择联系人文件");
if (!path) return;

try {
    let content = files.read(path);
    let lines = content.split("\n");
    lines.forEach(line => {
        let parts = line.split(",");
        if (parts.length >= 2) {
            addContact(parts[0].trim(), parts[1].trim());
        }
    });
} catch (e) {
    logError("读取文件失败: " + e);
}

}

// 手动输入按钮点击事件
ui.inputManual.click(() => {
if (isSending) {
toast("正在发送短信,请稍后再试");
return;
}
dialogs.rawInput("手动输入", "姓名,手机号\n例如: 张三,13800138000").then(text => {
let parts = text.split(",");
if (parts.length >= 2) {
addContact(parts[0].trim(), parts[1].trim());
} else {
toast("输入格式不正确");
}
});
});

// 添加联系人到列表
function addContact(name, phone) {
// 验证手机号格式
if (!/^1[3-9]\d{9}$/.test(phone)) {
toast("手机号格式不正确: " + phone);
return;
}

// 检查是否已存在
let exists = contacts.some(c => c.phone === phone);
if (exists) {
    toast("已存在相同手机号: " + phone);
    return;
}

contacts.push({name, phone});
updateContactList();

}

// 更新联系人列表显示
function updateContactList() {
ui.contactList.setDataSource(contacts.map((c, i) => {
return {
name: c.name,
phone: c.phone,
index: i
};
}));
}

// 删除联系人
ui.contactList.on("item_click", function(e, item) {
if (e.getView().id === "remove") {
contacts.splice(item.index, 1);
updateContactList();
}
});

// 发送短信按钮点击事件
ui.sendSms.click(() => {
if (isSending) {
toast("正在发送短信,请稍候");
return;
}

if (contacts.length === 0) {
    toast("请先添加联系人");
    return;
}

let content = ui.smsContent.text();
if (!content) {
    toast("请输入短信内容");
    return;
}

isSending = true;
ui.sendSms.text("发送中...");

// 开始发送
sendAllSms(content);

});

// 发送所有短信
function sendAllSms(content) {
let successCount = 0;
let failCount = 0;
let total = contacts.length;

logMessage("开始发送短信,共" + total + "条");

// 逐个发送
for (let i = 0; i < contacts.length; i++) {
    let contact = contacts[i];
    let status = sendSingleSms(contact.phone, content);

    if (status) {
        successCount++;
        logMessage("发送成功: " + contact.name + " (" + contact.phone + ")");
    } else {
        failCount++;
        logMessage("发送失败: " + contact.name + " (" + contact.phone + ")");
    }

    // 更新进度
    ui.sendSms.text("发送中 " + (i + 1) + "/" + total);
    sleep(500); // 防止发送过快
}

// 发送完成
isSending = false;
ui.sendSms.text("发送短信");
logMessage("发送完成: 成功 " + successCount + " 条,失败 " + failCount + " 条");

}

// 发送单条短信
function sendSingleSms(phone, content) {
try {
sms.send(phone, content);
return true;
} catch (e) {
logError("发送短信到 " + phone + " 失败: " + e);
return false;
}
}

// 清空所有按钮点击事件
ui.clearAll.click(() => {
if (isSending) {
toast("正在发送短信,请稍后再试");
return;
}

dialogs.confirm("确认清空", "确定要清空所有联系人和日志吗?").then(ok => {
    if (ok) {
        contacts = [];
        updateContactList();
        ui.logText.setText("");
        ui.smsContent.setText("");
    }
});

});

// 记录日志
function logMessage(msg) {
let time = new Date().toLocaleString();
let log = ui.logText.getText();
ui.logText.setText(time + " - " + msg + "\n" + log);
}

// 记录错误
function logError(msg) {
logMessage("[错误] " + msg);
}

// 初始化
logMessage("批量短信发送工具已启动");

相关文章
|
5月前
|
存储 Android开发 数据安全/隐私保护
Thanox安卓系统增加工具下载,管理、阻止、限制后台每个APP运行情况
Thanox是一款Android系统管理工具,专注于权限、后台启动及运行管理。支持应用冻结、系统优化、UI自定义和模块管理,基于Xposed框架开发,安全可靠且开源免费,兼容Android 6.0及以上版本。
434 4
|
4月前
|
机器学习/深度学习 Android开发 数据安全/隐私保护
手机脚本录制器, 脚本录制器安卓,识图识色屏幕点击器【autojs】
完整的UI界面,包含录制控制按钮和状态显示 屏幕点击动作录制功能,记录点击坐标和时间间隔
|
5月前
|
Android开发 数据安全/隐私保护 Python
微信抢红包脚本安卓插件,微信xposed抢红包模块, magisk微信抢红包模块
这个代码实现了一个完整的微信抢红包自动化工具,包含红包检测、自动点击、日志记录等功能
|
5月前
|
API 开发工具 Android开发
qq虚拟视频插件下载安装手机版, 安卓虚拟视频插件,替换摄像头工具
Xposed入口模块:拦截目标应用的相机调用‌23 Camera1 API处理:通过PreviewCallback替换视频流‌1 Camera2 API适
|
5月前
|
API Android开发
微信虚拟摄像头模块,微信虚拟视频聊天,安卓虚拟摄像头插件
该实现包含虚拟摄像头服务核心、视频流生成和Android配置三个关键模块,使用Camera2
|
6月前
|
存储 JSON API
安卓ck提取工具,可提取手机cookie插件,AUTOJS即可实现
怎么用autojs提取手机端的CK?其实autojs是支持提取ck的但是他提取的不是浏览器的CK,二十他自身浏览器环境的c
|
Android开发 开发者
Android Studio 利用Gradle组织更清晰的打包脚本
前言 我们最初写gradle脚本时候,通常的做法是把所有的打包脚本都写在了build.gradle文件中,这样做的容易引发的问题: 项目中多个模块的build.gradle配置的依赖版本重复或compileSdkVersion等不统一; 会导致一些依赖重复导致冲突; Android Support Library版本问题引发的一些列问题; 影响 build.gradle 文件扩展性、可读性、以及难以维护等; 针对以上问题,去寻找一个更清晰的打包系统,帮助开发者在组织打包脚本变得更简洁清晰。
1508 0
|
2月前
|
移动开发 前端开发 Android开发
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
250 12
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
2月前
|
移动开发 JavaScript 应用服务中间件
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
217 5
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
2月前
|
移动开发 Rust JavaScript
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
549 4
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡