回答
钉钉自动打开脚本
下面是一个完整的 Hamibot 脚本,实现每天早上八点后首次解锁手机时自动打开钉钉的功能。
脚本代码
// 文档地址 https://docs.hamibot.com/
var storageName = "dingding_auto_open";
var targetHour = 8;
var targetApp = "com.alibaba.android.rim"; // 钉钉包名
// 获取本地存储
var storage = storages.create(storageName);
// 获取当前日期字符串(用于判断是否是新的一天)
function getTodayString() {
var now = new Date();
return now.getFullYear() + "-" + (now.getMonth() + 1) + "-" + now.getDate();
}
// 获取当前小时
function getCurrentHour() {
return new Date().getHours();
}
// 打开钉钉
function openDingDing() {
app.launchApp("钉钉");
log("已打开钉钉");
}
// 主逻辑
function main() {
var today = getTodayString();
var lastOpenDate = storage.get("lastOpenDate", "");
var hasOpenedToday = storage.get("hasOpenedToday", false);
// 如果是新的一天,重置状态
if (today !== lastOpenDate) {
storage.put("lastOpenDate", today);
storage.put("hasOpenedToday", false);
hasOpenedToday = false;
log("新的一天,重置状态");
}
// 检查当前时间是否在 8 点之后
var currentHour = getCurrentHour();
if (currentHour < targetHour) {
log("当前时间未到 8 点,不执行");
return;
}
// 检查今天是否已经打开过
if (hasOpenedToday) {
log("今天已经打开过钉钉,不重复执行");
return;
}
// 执行打开钉钉
openDingDing();
storage.put("hasOpenedToday", true);
log("任务完成");
}
// 执行主逻辑
main();
配置说明
| 配置项 | 说明 |
|---|---|
targetHour |
目标小时数,默认为 8 |
targetApp |
钉钉应用包名 |
storageName |
本地存储名称,用于记录状态 |
使用方式
方式一:定时触发
在 Hamibot 控制台创建定时任务,设置每天 8:00 执行此脚本。
方式二:通知监听触发
如果需要检测解锁事件,可以配合通知监听服务,当检测到锁屏通知消失时触发脚本。
方式三:前台服务持续运行
将脚本改为前台服务模式,持续监听设备状态变化。
注意事项
- 无障碍权限:确保 Hamibot 已开启无障碍服务权限
- 自启动权限:确保 Hamibot 应用有自启动权限,否则可能无法按时触发
- 电池优化:将 Hamibot 加入电池优化白名单,避免被系统杀死
- 钉钉包名:不同版本的钉钉包名可能不同,可在设备信息中查看确认
- 状态持久化:脚本使用本地存储记录执行状态,避免同一天重复执行
进阶方案
如果需要更精确的解锁检测,可以使用以下代码监听设备状态:
// 检测屏幕状态
function isScreenOn() {
return device.isScreenOn();
}
// 轮询检测屏幕解锁
function waitForUnlock() {
while (!device.isScreenOn()) {
sleep(1000);
}
log("屏幕已解锁");
return true;
}
将上述检测逻辑融入主脚本,可以实现更精准的解锁触发。
如需进一步帮助,可访问 Hamibot 官方文档查看更多 API 用法。
ℹ️ 本回答由 AI 生成,内容仅供参考