Thanox 中文文档 下载 App

Thanox 情景模式实用案例集锦:从入门到进阶

案例一:跳过开屏广告(activityResumed + ui.findAndClickViewByText)

这是 Thanox 情景模式最经典的用法,结合了 Activity 生命周期 facts 和 ui handle。

场景:某个 app 启动后有一个 SplashActivity 广告页,上面有"跳过"按钮。

规则:

[
  {
    "name": "Skip Splash Ad",
    "description": "彩云天气启动页自动点击跳过",
    "priority": 1,
    "delay": 500,
    "condition": "activityResumed == true && componentNameAsShortString == \"com.nowcasting.activity/.SplashActivity\"",
    "actions": [
      "ui.showShortToast(\"尝试点击跳过...\");",
      "ui.findAndClickViewByText(\"跳过\", \"com.nowcasting.activity/com.nowcasting.activity.SplashActivity\");"
    ]
  }
]

要点:


案例二:微信退后台自动杀进程

场景:微信一退到后台就彻底杀掉,省电量。

规则:

[
  {
    "name": "Kill WeChat On Background",
    "description": "微信退到后台时杀进程",
    "priority": 2,
    "condition": "frontPkgChanged == true && from == \"com.tencent.mm\"",
    "actions": [
      "killer.killPackage(\"com.tencent.mm\");",
      "ui.showShortToast(\"微信已清理\");"
    ]
  }
]

缺点:杀掉微信意味着收不到消息推送。如果你是重度微信用户,可能不适合。

改进版:只在息屏后才杀:

"condition": "screenOff == true && from == \"com.tencent.mm\""

配合 delay 参数,息屏后等 30 秒再杀:

"delay": 30000,
"condition": "screenOff == true"

然后在 action 里判断当前前台是不是微信——不对,screenOff 触发时前台已经不是微信了。可以改成用 pkgKilled + 延时的组合,更灵活。


案例三:一键锁屏(快捷方式 + power.sleep)

场景:创建一个桌面快捷方式,点击后立即锁屏。

步骤:

  1. 在 Thanox → 情景模式 → 快捷方式引擎中,创建快捷方式:
  1. 然后写情景模式规则:
[
  {
    "name": "Profile Shortcut Sleep",
    "description": "点击桌面快捷方式时锁屏",
    "priority": 2,
    "condition": "shortcutLaunched == true && shortcutValue == \"turn screen off\"",
    "actions": [
      "power.sleep(0);"
    ]
  }
]

案例四:应用切换时 Toast 显示包名(调试用)

这是入门案例,写在 创建第一条规则 页面。

用途:当你正在找某个 app 的 Activity 组件名时,这个规则能让你随时看到当前 app 的包名——和 Thanox 的"显示当前 Activity"浮窗配合使用。


案例五:蓝牙连接提示

场景:连接到蓝牙耳机时弹出 Toast 提示。

规则:

[
  {
    "name": "BT Connected Alert",
    "description": "蓝牙连接到设备时提示",
    "priority": 2,
    "condition": "btConnectionStateChanged == true && btConnectionStateConnected == true",
    "actions": [
      "ui.showShortToast(\"已连接蓝牙设备: \" + btBoundedDeviceAliasNames);"
    ]
  }
]

案例六:GPS 自动开关

场景:进入地图 app 时自动打开 GPS,退出时关闭。

规则(需要结合 hw handle,Thanox 版本不同方法名可能略有差异):

[
  {
    "name": "Auto GPS On",
    "description": "进入地图 app 时开 GPS",
    "priority": 1,
    "condition": "frontPkgChanged == true && to == \"com.google.android.apps.maps\"",
    "actions": [
      "ui.showShortToast(\"GPS 已开启\");"
    ]
  },
  {
    "name": "Auto GPS Off",
    "description": "退出地图 app 时关 GPS",
    "priority": 1,
    "condition": "frontPkgChanged == true && from == \"com.google.android.apps.maps\"",
    "actions": [
      "ui.showShortToast(\"GPS 已关闭\");"
    ]
  }
]

注意:GPS 开关通常需要 shell root 权限(sh.execAsRoot),纯 System API 可能没有开放开关权限。具体实现方式取决于你的设备和 Thanox 版本。


案例七:时间段内自动控制 5G / 4G 切换

场景:白天(亮屏)用 5G,晚上(息屏)切回 4G。

这个场景需要 hw handle 控制移动网络模式,实现方式因机型而异。Thanox 的情景模式引擎本身提供了触发条件(screenOn / screenOff),但具体的网络模式切换动作需要你根据自己设备的 API 来写。

一些开源社区分享的做法是通过 sh.execAsRoot 调用 settings 命令或直接修改系统属性。


规则编写最佳实践

  1. 先写简单规则跑通:从案例一或案例四开始,能跑通再往上叠加复杂度
  2. 多个规则用 JSON 数组:方括号 [ ... ] 里可以放多个规则对象,用逗号分隔
  3. 测试用 Toast 提示:调试阶段多放 ui.showShortToast 来确认规则真的被触发了
  4. 不要依赖 delay 做精确控制:delay 是触发后的执行延迟,不是定期触发。Thanox 没有内置的"每 X 分钟"定时器——需要用其他机制绕过
  5. 规则 name 必须唯一:同名规则会互相覆盖
  6. 注意 MVEL 转义:字符串中的双引号必须 \" 转义

更多规则资源

Thanox 官方文档和酷安社区有大量用户分享的情景模式规则。找到你感兴趣的规则,复制 JSON 进 Thanox 情景模式编辑器就能直接用。

下一页是情景模式的最后一个 topic:快捷方式引擎详解。