Thanox 情景模式规则引擎入门:什么时候干什么
情景模式是什么
情景模式(Profile)是 Thanox 最强大的功能,也是它和其他工具拉开差距的地方。
简单理解,情景模式就是:
什么时候(触发条件 condition),干什么(执行动作 actions)。
这是一个完整的规则引擎,基于 MVEL(MVFLEX Expression Language)表达式语言。规则引擎的好处是——你不需要每一个自动化场景都写一个独立的功能开关,而是用同一套框架实现无数种自动化:
- 微信退到后台时自动 killPackage 杀进程
- 蓝牙连接到耳机时自动降低音量
- 亮屏 5 分钟后弹出 Toast 提醒你休息
- 某个 app 启动时自动跳到主界面(结合移花接木)
和 Tasker 的对比
如果你用过 Tasker 或 MacroDroid,对这种"触发条件 + 执行动作"的模式一定不陌生。Thanox 情景模式和 Tasker 的区别:
| 维度 | Thanox 情景模式 | Tasker |
|---|---|---|
| 运行位置 | system_server 进程(system 权限) | 普通 app 进程 |
| 能做什么 | 杀进程、锁屏、启动 Activity、Hook 系统 API | UI 点击、启动 app、通知、系统设置(部分) |
| 触发粒度 | Activity 级别的 Created / Resumed / Paused | 粗粒度(app 启动、屏幕开关) |
| 动作粒度 | 可以直接调用 Android SDK 的 API | 需要 AutoInput / SecureSettings 等插件 |
| 学习成本 | MVEL 表达式(接近 Java) | 图形化界面,直观 |
| 权限依赖 | Xposed / Magisk | 普通权限 + 可选择 Accessibility + Shizuku |
简单说:Tasker 易用但受限于 app 层权限;Thanox 情景模式难学但能力更强——因为它跑在 system_server 里。
一条规则长什么样
情景模式可以用 JSON 格式编写。最小可用的规则:
[
{
"name": "Current pkg",
"description": "应用切换时,Toast 显示当前应用包名",
"priority": 2,
"delay": 2000,
"condition": "frontPkgChanged == true",
"actions": [
"ui.showShortToast(activity.getFrontAppPackage());"
]
}
]
规则参数解释
| 参数 | 类型 | 含义 | 注意事项 |
|---|---|---|---|
name | String | 规则名称,英文,多条不能重名 | 重名会被覆盖 |
description | String | 任意描述 | 可以写中文,方便自己看 |
priority | int | 优先级,决定多条规则的执行顺序 | 数字越大越优先?或越小越优先?官方未明确,建议保持合理区分 |
delay | int | 动作执行的延迟时间(毫秒) | 2000 = 触发后等 2 秒再执行动作 |
condition | String | 触发条件,MVEL 表达式 | 双引号需要转义 \" |
actions | Array | 执行动作,多个字符串,每个是一条 MVEL 调用 | 双引号需要转义 \" |
两大核心:Facts 和 Handle
情景模式规则引擎的所有能力来自两个组件:
Facts(事实与参数)
Thanox Framework 层会在各种事件发生时发布"事实",并注入相关参数。比如:
- 应用安装了 →
pkgAdded = true,pkgName = "com.tencent.mm" - 屏幕亮了 →
screenOn = true - Activity 创建了 →
activityCreated = true,componentNameAsString = "com.example/.MainActivity"
condition 条件就是通过判断某个 facts 参数来触发的。
Handle(执行能力)
Thanox 提供了一组叫 handle 的能力接口,每个 handle 代表一类操作:
| Handle 名 | 能力范围 |
|---|---|
killer | 杀进程 |
activity | 启动 Activity / 获取前台 app |
power | 锁屏 / 亮屏 / 亮度 |
task | 最近任务管理 / 清理后台 |
ui | Toast 提示 / 点击界面元素 |
hw | 硬件控制(GPS、蓝牙等) |
io | 文件读写 |
data | 数据库操作 |
ringtone | 铃声 / 通知音设置 |
sh | Shell / su 命令 |
input | 模拟按键输入 |
pkg | 应用安装 / 卸载 |
Log | 日志输出 |
Audio | 音频焦点控制 |
Battery | 电量读取 |
Context | Context 对象 |
Thanos | Thanox 核心能力(冻结、隐匿等) |
在 actions 里,你就是在调用这些 handle 的方法。比如 killer.killPackage("com.tencent.mm") 就是用 killer handle 杀掉微信。
下一页:创建你的第一条情景模式规则。