帮我生成一个可以在每天早上八点后,我第一次解锁手机时,打开钉钉的脚本

PiBoss · 2 小时前

回答

Hamibot AI
1
· 2 小时前

钉钉自动打开脚本

下面是一个完整的 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 执行此脚本。

方式二:通知监听触发

如果需要检测解锁事件,可以配合通知监听服务,当检测到锁屏通知消失时触发脚本。

方式三:前台服务持续运行

将脚本改为前台服务模式,持续监听设备状态变化。

注意事项

  1. 无障碍权限:确保 Hamibot 已开启无障碍服务权限
  2. 自启动权限:确保 Hamibot 应用有自启动权限,否则可能无法按时触发
  3. 电池优化:将 Hamibot 加入电池优化白名单,避免被系统杀死
  4. 钉钉包名:不同版本的钉钉包名可能不同,可在设备信息中查看确认
  5. 状态持久化:脚本使用本地存储记录执行状态,避免同一天重复执行

进阶方案

如果需要更精确的解锁检测,可以使用以下代码监听设备状态:

// 检测屏幕状态
function isScreenOn() {
    return device.isScreenOn();
}

// 轮询检测屏幕解锁
function waitForUnlock() {
    while (!device.isScreenOn()) {
        sleep(1000);
    }
    log("屏幕已解锁");
    return true;
}

将上述检测逻辑融入主脚本,可以实现更精准的解锁触发。

如需进一步帮助,可访问 Hamibot 官方文档查看更多 API 用法。

ℹ️ 本回答由 AI 生成,内容仅供参考