与 Tasker 配合做自动化 - 让手机按条件自动执行命令
为什么要自动化
手动点预设槽位是日常操作,但有些场景更适合"全自动":
- 晚上睡觉前自动冻结所有社交应用,防止通知打扰
- 连接公司 Wi-Fi 时自动执行网络诊断命令
- 电池电量低于 20% 时自动关闭不必要的后台进程
- 打开地图时自动允许定位权限(配合某些需要 shell 的权限控制工具)
Tasker 是最主流的 Android 自动化工具,它能监听几乎所有系统事件(时间、位置、Wi-Fi、电量、锁屏状态等),然后执行你配置的动作。Runner 的 Exec 接口就是 Tasker 调用高权限 shell 命令的最佳通道。
基本配置步骤
以"晚上 23:00 自动冻结社交应用"为例:
步骤一:创建 Profile
- 打开 Tasker → 新建 Profile
- 选择「时间」触发器
- 设置开始时间 23:00,结束时间 07:00(可选,只在这个时间段内触发)
步骤二:关联 Task
- 新建 Task → 命名「冻结社交」
- 添加 Action → 选择「App」→「Activity」
- 设置 Activity:
- Component:
com.shizuku.uninstaller/.Exec - Extras:
content=pm disable-user --user 0 com.sina.weibo
步骤三:测试和迭代
- 先手动触发 Task 测试 Runner 能不能正常被调用
- 如果失败,回到 Exec Activity 接口那节检查包名和 Activity 名
- 确认 Runner 的 Shizuku 服务已经启动(Tasker 触发时 Runner 必须可用)
进阶:多命令批处理
Tasker 的单个 Activity Action 只能传一条命令,但可以用 shell 分号组合多条:
content=pm disable-user --user 0 com.sina.weibo; pm disable-user --user 0 com.tencent.mm; pm disable-user --user 0 com.ss.android.ugc.aweme; pm disable-user --user 0 com.xingin.xhs
或者在 Tasker 里串多个 Action,每个 Action 调一次 Runner 的 Exec 接口执行一条命令。第二种方式更灵活,任何一条失败都能单独发现。
典型自动化场景
场景一:公司 Wi-Fi 自动诊断
Trigger: Wi-Fi Connected → SSID = "Company-Guest"
Action:
Activity → com.shizuku.uninstaller/.Exec
content=ping -c 3 192.168.1.100 > /sdcard/network-check.txt
(可选)AutoNotification 弹出 ping 结果
场景二:低电量自动省电
Trigger: Battery Level → < 20%
Action:
Activity → com.shizuku.uninstaller/.Exec
content=am force-stop com.tencent.mm; am force-stop com.ss.android.ugc.aweme; input keyevent KEYCODE_SLEEP
场景三:开机后自动启动 Shizuku + Runner 初始化
如果 Shizuku 是 Magisk 自动启动的,Runner 服务会随开机就绪。Tasker 可以在开机后自动执行:
Trigger: Boot Completed
Action:
延迟 10 秒(等 Shizuku 服务完全就绪)
Activity → com.shizuku.uninstaller/.Exec
content=echo "Runner 初始化完成"
稳定性注意事项
Shizuku 服务必须先于 Tasker 触发就绪——如果用 adb 无线调试方式启动,开机后 Shizuku 服务不会自动拉起,需要先手动启动才能执行自动化命令。这种情况下建议配合"开机自动启动 Shizuku"的 Tasker 任务。
Exec 接口调用本身很快,但 Runner 弹窗通知可能打断用户体验。如果不需要 UI 反馈,可以在 Runner 设置里关闭 Exec 调用通知,只保留执行结果在历史记录里。