tasker 中文文档 下载 App

Tasker Script 动作详解 JavaScriptlet Java Code Shell 三种脚本能力

Script:突破 Tasker 边界

当你发现"内置 Action 做不到这件事"时,就是 Script 类别出场的时候。Tasker 提供了三种脚本入口,能力从浅到深:

入口难度能力版本
JavaScriptlet中嵌入 JS,访问 Tasker API 和变量所有版本
Java Code高BeanShell(类 Java),完整 Android API + AI 辅助v6.6+
Shell Command高执行底层 shell 命令,可用 Root所有版本

为什么需要脚本

内置 Action 覆盖了 190+ 种常见场景,但总有边界情况:

JavaScriptlet

JavaScriptlet 是 Tasker 最常用的脚本入口。它执行一段 JavaScript 代码,可以:

JavaScriptlet 基础语法

// 读取 Tasker 变量
var battery = tasker.getGlobal("%BATT");

// 设置 Tasker 全局变量
tasker.setGlobal("%BatteryDoubled", battery * 2);

// 设置 Tasker 局部变量(仅当前 Task 可见)
tasker.setLocal("%tmp", "临时值");

// 返回值给 Tasker(作为 JSLET 变量)
tasker.returnValue(battery);

JavaScriptlet 常用 API

API功能
tasker.getGlobal("%name")读取全局变量
tasker.setGlobal("%name", value)设置全局变量
tasker.getLocal("%name")读取局部变量
tasker.setLocal("%name", value)设置局部变量
tasker.taskExists("taskName")检查 Task 是否存在
tasker.runTask("taskName", priority)执行另一个 Task
tasker.enableProfile("profileName")启用/禁用 Profile
tasker.showScene("sceneName")显示 Scene
tasker.notify(title, text, icon)创建通知
tasker.say(text)TTS 朗读

JavaScriptlet 实战示例

复杂数学计算:

// 计算电池续航估算
var battery = parseFloat(tasker.getGlobal("%BATT"));
var drainRate = 2; // 假设每小时消耗 2%
var remainingHours = battery / drainRate;
tasker.setGlobal("%BatteryHoursLeft", Math.round(remainingHours));

解析复杂字符串:

// 从 URL 提取查询参数
var url = tasker.getGlobal("%LastURL");
var params = {};
url.split("?")[1].split("&").forEach(function(pair) {
    var keyVal = pair.split("=");
    params[keyVal[0]] = keyVal[1];
});
tasker.setGlobal("%ApiKey", params.api_key || "");

JavaScriptlet 的限制

Java Code(v6.6+)

Java Code 是 Tasker 6.6 新增的强大入口,执行环境是 BeanShell(类 Java 语法,比 Java 更宽松)。与 JavaScriptlet 的区别:

Java Code 基础示例

// 获取 Accessibility Service
var taskerService = tasker.getAccessibilityService();
// 获取 Location Manager
var locManager = context.getSystemService(context.LOCATION_SERVICE);
// 发起 Intent
var intent = new android.content.Intent(android.content.Intent.ACTION_VIEW);
intent.setData(android.net.Uri.parse("[目标 URL]"));
context.startActivity(intent);

AI 代码助手

Java Code 编辑器里有个放大镜图标,点击后可以:

这让"不会 BeanShell 也能写脚本"成为可能——描述你想做什么,AI 帮你写。

Shell Command

Shell Command 可以执行 Android shell 命令,相当于 adb shell 的直接入口:

需要 Root 才能做的事:

无 Root 也能做:

示例:

# 模拟返回键
input keyevent KEYCODE_BACK

# 获取屏幕状态
dumpsys power | grep Display

# 截屏(需 Root)
screencap -p /sdcard/screen.png

Shell Command 的风险

建议:能用 JavaScriptlet / Java Code 解决的,优先用它们。Shell Command 是最后兜底。

脚本选择建议

场景推荐入口
读写 Tasker 变量 + 简单计算JavaScriptlet
数组/JSON/正则处理JavaScriptlet
访问 Android 原生 APIJava Code
UI 自动化(Accessibility)Java Code
需要 Root 的底层操作Shell Command
不会写代码想尝试Java Code + AI 助手