Tasker 插件集成 — 与安卓最强自动化应用联动
Tasker 是什么
Tasker 是 Android 平台最强大的自动化应用,允许用户根据各种条件(时间、位置、事件、应用等)触发预设的操作。AutoJs6 可以作为 Tasker 的插件,把 JavaScript 自动化能力接入 Tasker 的规则引擎。
┌─────────────────────────┐
│ Tasker │
│ (条件判断 / 触发规则) │
└──────────┬──────────────┘
│ 触发插件动作
▼
┌─────────────────────────┐
│ AutoJs6 │
│ (JavaScript 脚本执行) │
└─────────────────────────┘
插件模式 vs 独立模式
| 模式 | 运行方式 | 适合场景 |
|---|---|---|
| 独立模式 | AutoJs6 自己管理脚本生命周期 | 日常使用、独立任务 |
| Tasker 插件 | Tasker 触发执行 AutoJs6 脚本 | 条件驱动的自动化 |
配置步骤
前置条件
- 安装 Tasker(Play Store 或 GitHub)
- 安装 AutoJs6
- 确保 AutoJs6 无障碍服务已开启
在 Tasker 中添加 AutoJs6 动作
步骤:
- 打开 Tasker
- 创建或编辑一个 Profile(条件配置文件)
- 添加触发条件(如「时间」「应用」「事件」)
- 进入 Task(任务)编辑
- 点击 + 添加动作 → 选择「插件」→ 找 AutoJs6
- 配置要执行的脚本路径和参数
- 保存并启用
配置界面
Tasker → 新建 Task → Action → Plugin → AutoJs6
脚本路径: /sdcard/AutoJs6/scripts/tasker_example.js
执行模式: 前台 / 后台 / 弹窗
参数传递: key1=value1,key2=value2
在脚本中接收 Tasker 参数
// Tasker 传入的参数通过全局对象获取
// 具体 API 以 AutoJs6 文档为准
// 方法一:tasker 对象(如果存在)
if (typeof tasker !== "undefined") {
let params = tasker.getParams();
console.log("Tasker 参数: " + JSON.stringify(params));
}
// 方法二:检查 Intent(Android 原生方式)
let intent = context.getIntent();
if (intent) {
let extras = intent.getExtras();
if (extras) {
extras.keySet().forEach(key => {
console.log(key + " = " + extras.get(key));
});
}
}
实战联动场景
场景一:到达家时自动静音 + 打开 Wi-Fi
Tasker Profile:
条件: 位置 - 家(GPS 或 Wi-Fi SSID)
任务:
1. 设置铃声为振动
2. 打开 Wi-Fi
3. [AutoJs6 插件] 运行自动签到脚本
// tasker_checkin.js — 被 Tasker 触发
// 打开常用应用完成每日签到
let apps = ["微博", "知乎", "百度"];
apps.forEach(app => {
toast("签到: " + app);
app.launchApp(app);
sleep(1500);
// 找到签到按钮点击
let btn = textContains("签到").findOne(3000);
if (btn) {
btn.click();
toast(app + " 签到完成");
} else {
toast(app + " 签到按钮未找到");
}
sleep(1000);
});
home();
toast("全部签到完成");
场景二:充电时自动清理后台
Tasker Profile:
条件: 事件 - 电源 - 充电器连接
任务:
[AutoJs6 插件] 运行清理脚本
// tasker_cleanup.js — 充电时运行
toast("开始清理后台...");
// 获取最近任务列表(需要 Shell 权限)
// Root 方式
shell("su -c 'am kill-all'");
// 或逐个强制停止
let apps = [
"com.example.chat",
"com.example.social",
"com.example.game"
];
apps.forEach(pkg => {
app.kill(pkg);
});
toast("清理完成");
场景三:特定应用启动时自动操作
Tasker Profile:
条件: 应用 - 微博(前台)
任务:
[AutoJs6 插件] 自动点赞脚本(延迟 2 秒执行)
// tasker_weibo_like.js — 微博启动后自动点赞
sleep(2000); // 等应用加载
// 找到点赞按钮(不同版本可能需要调整选择器)
let likeBtn = id("like_icon").findOne(5000);
if (likeBtn) {
// 如果还没点赞,就点赞
let container = likeBtn.parent();
let liked = container.findOne(textContains("已赞"));
if (!liked) {
likeBtn.click();
toast("已点赞");
}
}
场景四:定时批量任务
Tasker Profile:
条件: 时间 - 每天 08:00
任务:
[AutoJs6 插件] 运行晨间自动流程脚本
// tasker_morning.js — 每天早上 8 点执行
toast("晨间自动开始");
// 1. 同步各平台数据
// 2. 完成每日签到
// 3. 清理缓存
// 4. 报告天气
// ... 各种自动化操作
toast("晨间自动完成");
触发方式对比
| 触发方式 | 优势 | 劣势 |
|---|---|---|
| Tasker 插件 | 条件判断灵活、无需脚本常驻 | 需要额外安装 Tasker |
| AutoJs6 定时 | 独立、单应用 | 条件判断能力有限 |
| 手动运行 | 最可控 | 无法自动触发 |
| Boot 启动 | 开机自启 | Android 后台限制可能影响 |
常见问题
Tasker 触发后 AutoJs6 不执行
检查清单:
- AutoJs6 无障碍服务是否开启
- Tasker 和 AutoJs6 是否都在电池白名单
- AutoJs6 版本是否支持插件模式
- 脚本路径是否正确(绝对路径)
- 在 AutoJs6 内手动运行同一脚本是否正常
脚本运行太快 / 太慢
Tasker 会等待脚本执行完再进入下一步。如果脚本卡住,可以设置超时:
- Tasker → 任务编辑 → AutoJs6 动作 → 超时设置(秒)
参数传递格式
// Tasker 中配置参数
key1=value1,key2=value2
// 脚本中读取
// 具体 API 以 AutoJs6 Tasker 插件文档为准
退出码
脚本执行完可以通过 exit(code) 返回退出码,Tasker 可以根据退出码决定下一步:
// 成功退出
exit(0);
// 失败退出
exit(1);
组合示例:完整的时间条件自动化
时间线:
06:30 → Tasker 触发 → AutoJs6 脚本(检查天气 + 设置闹钟)
07:00 → Tasker 触发 → AutoJs6 脚本(打开新闻 APP)
08:00 → Tasker 触发 → AutoJs6 脚本(批量签到)
12:00 → Tasker 触发 → AutoJs6 脚本(提醒休息)
18:00 → Tasker 触发 → AutoJs6 脚本(关闭通知、开启勿扰)
22:00 → Tasker 触发 → AutoJs6 脚本(清理后台)
每个时间点一个独立脚本,逻辑清晰、互不干扰。