一、Tasker 概述
Tasker 是一款运行在 Android 系统上的强大自动化辅助应用。它通过 配置文件(Profiles) 设置触发条件,并执行对应的 任务(Tasks),实现各种自动化操作。
-
触发器类型:程序、时间、日期、位置、硬件/软件状态、事件、快捷方式、桌面小工具、计时器
-
任务组成:一系列操作(Actions),支持循环、变量、条件判断(If)
-
特性:
-
无需 Root 权限即可使用大部分功能(部分底层操作需要 Root)
-
支持第三方插件(如 AutoVoice、AutoInput)
-
无需编程基础
-
-
桌面插件:提供 "Clickable" 或定时任务的桌面小工具(Widget),可直接调用任务
二、核心概念(术语解读)
| 术语 | 说明 |
|---|---|
| 配置文件(Profiles) | Tasker 的核心,由 背景(Contexts) 和对应的 任务(Tasks) 组成。当所有背景条件满足时,自动执行任务。 |
| 背景(Contexts) | 任务执行的前提条件,可以是事件、状态、时间、位置等。只有条件满足时,任务才会触发。 |
| 任务(Tasks) | 由多个 操作(Actions) 构成的执行单元。"操作"(Actions)是Tasker里的最小动作。 |
| 操作(Actions) | Tasker 中的最小动作单元,例如拍照、发送 HTTP 请求、变量赋值等。 |
| 插件(Widget) | Tasker 提供的桌面小工具,可直接调用指定任务,无需满足背景条件。 |
三、常用扩展插件
| 插件 | 功能 |
|---|---|
| AutoVoice | 使用自定义语音命令控制手机 |
| AutoInput | 自动输入文本,并获取其他应用的界面信息 |
| AutoCast | 控制 Chromecast 设备 |
插件可在 Google Play 或 Tasker 官网下载安装。插件中的变量可与 Tasker 变量共用。如需后台使用插件,需开启自动唤醒、锁定近期任务、关闭电池优化、授予相关权限。
四、基本使用流程
-
创建配置文件(Profiles) 选择一个触发条件(例如:事件 → 电话 → 未接来电)
-
创建任务(Tasks) 配置文件创建后,Tasker 会要求立即关联一个任务(不能没有任务)
-
添加操作(Actions) 在任务中添加具体操作(例如:媒体 → 拍照)
-
保存 任务变更后需手动点击返回栏的 ✓ 确认,否则不生效
-
执行 当触发条件满足时,任务按添加顺序依次执行
注意事项
1、多数操作需要tasker获取操作权限,这个需要注意
2、小米手机、坚果手机使用tasker可能会出现异常。华为手机使用效果比较好
3、虽然说tasker使用不需要root功能,但是设计底层的操作,也需要手机root,请谨慎使用
4、【任务】中有变更,需要返回任务栏点击√确认,否则不生效
5、【任务】中可以同时添加多个任务,会按照顺序依次执行
6、如果有配置文件引用该任务,则该任务无法删除,需要在配置文件中取消任务连接才可以正常删除
7、【变量】例如获取未接来电的信息,则系统有给出的%evtprm1
tasker内部定义了许多的变量,我们可以直接使用。 同时我们也可以自己设置变量,用来存储或者存储转换后的信息
变量的命名规则是:%变量名称,如%code,%CODE 注意:如果%后跟的是小写的字母,那么该变量只可以在该事件或者任务中使用。 如果%后跟的是大写的字母,那么该变量可以被认为是全局变量。
五、配置文件(触发条件)详解
1. 事件(Events)
最常用的触发器,瞬间发生。包括:
-
电话:手机振铃、挂机、未接来电、收到短信等
-
传感器:手势(利用加速度/陀螺仪记录运动轨迹)
-
变量:变量值变更
-
媒体:音乐曲目变更
-
文件:文件属性变动、被修改、被删除、被打开、被移动
-
系统:收到 Intent(可接收系统全局 Intent,extra 数据可直接作为变量使用)
2. 状态(States)
持续性条件,如:
-
网络连接状态
-
应用程序运行中
-
电量状态
3. 时间 / 日期
-
时间:用于定时任务(例如每天 8:00 执行)
-
某天:特定日期的定时任务
4. 位置(Location)
- 进入或离开某个地理区域时触发(例如到家自动连 WiFi)
5. 应用程序(Application)
- 指定应用打开或关闭时触发(需授予获取应用使用情况权限)
六、任务(Tasks)中的常用操作
1. 代码类
-
Java 函数
-
选择类或对象 → 选择成员函数
-
有参数时需先创建传入对象
-
返回值名称避免与 Tasker 内部变量冲突(建议小写开头驼峰命名)
-
无需声明变量类型,直接传递即可;调用构造函数需使用
new
-
-
运行 Shell 命令 示例:提取短信中的验证码
javaecho "%SMSRB" | grep -iE "码|碼|code"将输出存储到变量
%MESSAGE_CODE,错误存储到%ERROR_CODE
2. 网络请求
-
HTTP Request
-
Method:GET / POST
-
URL:例如
https://www.baidu.com/s?wd=天气 -
SSL:HTTPS 需勾选
-
Output:保存到变量(如
%weatherResult) -
返回数据保存在
%http_file_output,响应头保存在%http_headers()数组
-
3. 变量操作
-
变量值增加 / 减少 / 随机化
-
变量截取、合并、拆分、搜索替换
-
数组操作(出栈等)
4. 媒体与显示
-
拍照 、拍照
-
DPI 密度调整(调整屏幕分辨率,新手谨慎操作,错误设置可能导致无法开机)
5. 场景(Scenes)
-
用于创建自定义 UI 界面,并在界面中调用任务
-
注意:显示场景为图层时,务必勾选"显示退出按钮",否则 UI 会遮挡整个屏幕,只能重启手机
七、变量详解
命名规则
| 类型 | 格式 | 示例 | 作用域 |
|---|---|---|---|
| 局部变量 | % + 全小写字母 |
%code, %message |
仅当前任务或事件内 |
| 全局变量 | % + 大写字母开头(至少 3 个字符) |
%CODE, %WEATHER_DATA |
所有任务、配置文件共享 |
| 数组变量 | %变量名 + 数字(从 1 开始) |
%VAR1, %VAR2 |
按索引访问 |
内部预定义变量(部分)
-
%SMSRB:收到的短信文本内容 -
%evtprm1:事件参数,例如未接来电的号码 -
%TIME:当前时间
更多内部变量请参考 Tasker 软件内的"帮助"或"变量"页面。
八、实用示例
示例 1:获取短信中的验证码并发送到服务器
前提
-
服务器端部署了一个 Java jar 包,提供两个接口:
-
/toTasker?token=xxx:接收验证码信息 -
/getCode:返回解析好的 4 或 6 位验证码
-
服务器端代码(Spring Boot)
java
@RestController
public class CodeController {
private static String code;
@GetMapping("/toTasker")
public String toTasker(String token) {
code = vCode.vcode(token); // 假设 vCode.vcode 解析验证码
System.out.println(code);
return "success";
}
@GetMapping("/getCode")
public String getCode() {
return code;
}
}
Tasker 配置步骤
-
配置文件:事件 → 电话 → 收到短信(任意短信)
-
任务:新建任务,依次添加以下操作:
-
运行 Shell 命令
javaecho "%SMSRB" | grep -iE "码|碼|code"输出存储到
%MESSAGE_CODE -
变量 → 变量搜索替换
-
源变量:
%MESSAGE_CODE -
搜索正则:
\d{4}|\d{6}(匹配 4 或 6 位数字) -
将匹配存储到
%CODE
-
-
网络 → HTTP Request
-
Method:GET
-
URL:
http://你的服务器IP:8080/toTasker?tasker=%CODE
-
-
注意:手机管家类应用可能会拦截验证码,需关闭"验证码安全保护"功能,否则 Tasker 无法读取短信内容。
示例 2:监控 Gitee 仓库变更
步骤
-
Gitee Webhook 设置
-
仓库 → 管理 → WebHooks → 添加
-
URL:
https://你的后端服务/gitee/webhook -
事件类型:Push
-
-
Java 后端服务(Spring Boot)
-
创建
GiteeWebhookPayload类映射 JSON 数据(包含 head_commit, commits, pusher, repository 等) -
编写 Controller 接收 POST 请求:
java@PostMapping("/gitee/webhook") public ResponseEntity<String> handleWebhook(@RequestBody GiteeWebhookPayload payload) { System.out.println("Received ref: " + payload.getRef()); return ResponseEntity.ok("OK"); } import java.util.List; // 用于映射Gitee Webhook推送的JSON数据结构的类 GiteeWebhookPayload public class GiteeWebhookPayload { private String head_commit; private String before; private String after; private String ref; private String master_branch; private String repository; private String commits_count; private List<Commit> commits; private Pusher pusher; private Repository repository_info; private String total_commits_count; private String event_type_name; // getters and setters... public static class Commit { private String id; private String message; private String timestamp; private String url; private String author_name; private String author_email; // getters and setters... } public static class Pusher { private String id; private String username; private String email; private String name; // getters and setters... } public static class Repository { private String id; private String name; private String description; private String homepage; private String git_http_url; private String git_ssh_url; private String url; // getters and setters... } } // Controller层的内容 import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; import org.springframework.http.ResponseEntity; @RestController public class GiteeWebhookController { @PostMapping("/gitee/webhook") public ResponseEntity<String> handleGiteeWebhook(@RequestBody GiteeWebhookPayload payload) { // 处理Webhook数据的逻辑 System.out.println("Received Gitee webhook with ref: " + payload.getRef()); // 这里可以添加代码来处理payload,例如触发CI/CD流程 // 返回响应 return ResponseEntity.ok("Webhook received successfully"); } }
-
-
Tasker 中的配置
-
配置文件:状态 → 以太网连接(或使用"时间"定期触发)
-
任务:网络 → HTTP Request → 请求你的后端服务 URL
-
确保后端服务支持 HTTPS(因为 Gitee 使用 HTTPS 发送 Webhook),且设备网络稳定。
示例 3:转发短信到微信
参考链接:https://taskerm.com/2020/03/05/forwarded-sms-to-wechat-by-tasker (利用 HTTP Request 调用微信的企业微信机器人或第三方推送服务)
示例 4:按需开启 GPS
-
场景:打开百度地图、高德地图时才开启 GPS,其他时候关闭 → 省电、保护隐私
-
实现:配置文件 → 应用程序 → 选择地图应用 → 进入任务开启 GPS,退出任务关闭 GPS
示例 5:到家自动连 WiFi
- 配置文件 → 位置 → 设定家附近的地理围栏 → 任务 → 网络 → 连接 WiFi
示例 6:来电时增大音量
- 配置文件 → 事件 → 电话 → 手机振铃 → 任务 → 媒体 → 媒体音量(调大)
九、HTTP 请求注意事项
-
确保 Tasker 拥有网络访问权限
-
VPN 或代理可能阻止 Tasker 的网络请求
-
对于 JavaScript 渲染的页面(如百度搜索结果),直接 HTTP GET 可能无法获取完整内容,需使用浏览器自动化工具
-
请求天气 JSON 示例:
http://t.weather.sojson.com/api/weather/city/101030100
十、注意事项与兼容性
| 事项 | 说明 |
|---|---|
| 手动保存 | 任务或配置文件修改后,必须点击返回栏的 ✓ 确认,否则不生效 |
| 删除任务 | 如果有配置文件引用了该任务,则无法直接删除,需先解除引用 |
| 权限 | 多数操作需要授予相应权限(如读取短信、位置、网络等) |
| Root 需求 | 普通自动化不需要 Root,但底层操作(如修改系统文件、某些 Shell 命令)需要 Root |
| 手机兼容性 | 小米、坚果手机可能出现异常;华为手机效果较好 |
| DPI 调整 | 新手谨慎使用,错误的 DPI 可能导致手机无法开机 |
| 场景退出按钮 | 显示场景为图层时,必须勾选"显示退出按钮",否则会遮挡屏幕无法操作 |
十一、总结
Tasker 是一款功能极其强大的 Android 自动化工具,通过"条件 → 动作"的模式,可以实现从简单定时任务到复杂交互(如验证码自动处理、仓库监控)的各种自动化。熟练掌握配置文件、任务操作、变量和插件,可以极大地提升手机使用效率。