写一个脚本,首先打开一个应用,然后等待20s,之后关闭应用,最后回到hamibot

HAMI_5791309430 · 23 小时前

回答

Hamibot AI
1
· 23 小时前

以下是满足你需求的 Hamibot 脚本代码。代码已针对 Rhino 1.7.15 引擎进行兼容处理,并包含完整的执行逻辑与容错机制。

// 文档地址 https://docs.hamibot.com/
"auto"; // 启用无障碍模式

// 配置目标应用(可填写应用名称或完整包名)
var targetApp = "微信"; 

function main() {
    // 1. 解析应用包名
    var pkg = getPackageName(targetApp);
    if (!pkg) {
        pkg = targetApp;
        if (!getAppName(pkg)) {
            toast("未找到目标应用,请检查名称或包名是否正确");
            exit();
        }
    }

    // 2. 打开应用
    toast("正在启动应用...");
    app.launch(pkg);
    // 等待应用主界面加载(可根据设备性能微调)
    sleep(3000);

    // 3. 等待 20 秒
    toast("保持运行 20 秒...");
    sleep(20000);

    // 4. 关闭应用
    toast("正在强制关闭应用...");
    // 优先使用 Shell 命令强制停止,执行效率高
    var shellResult = shell("am force-stop " + pkg, true);
    if (shellResult.code !== 0) {
        // 若 Shell 无权限,降级为通过系统设置页点击“强制停止”
        forceStopViaSettings(pkg);
    }

    // 5. 返回桌面(脚本结束后会自动交还控制权至 Hamibot)
    home();
    toast("任务完成");
}

// 备用方案:通过系统设置页强制停止应用
function forceStopViaSettings(pkg) {
    app.openAppSetting(pkg);
    sleep(1500);
    var btn = text("强制停止").findOne(3000) || text("强行停止").findOne(3000);
    if (btn) {
        btn.click();
        sleep(500);
        var okBtn = text("确定").findOne(2000);
        if (okBtn) okBtn.click();
    }
    // 返回两次退出设置页
    back(); sleep(300); back(); sleep(300);
}

main();

关键说明与最佳实践:

  1. 权限前置检查:脚本依赖 Android 无障碍服务与后台弹窗权限。若未正确授权,脚本会直接提示“运行结束”。请在手机「设置」→「无障碍」中开启 Hamibot 服务,并在「应用管理」→ Hamibot → 权限管理中开启「后台弹出界面」。
  2. 应用标识替换:将 var targetApp = "微信"; 替换为你实际需要操作的应用。支持中文名称(如 "抖音")或包名(如 "com.ss.android.ugc.aweme")。
  3. 关闭策略:脚本优先调用 am force-stop 实现静默关闭。该命令在多数设备上无需 Root 即可生效。若设备限制 Shell 权限,会自动降级为模拟点击系统设置页的“强制停止”按钮,已兼容主流 Android 机型文案。
  4. 返回 Hamibot:执行 home() 后脚本自然结束,Hamibot 控制台或悬浮窗会自动恢复前台焦点。你可在控制台查看完整运行日志。
  5. 稳定性优化:若目标应用启动较慢或包含开屏广告,可适当增加 sleep(3000) 的时长,或替换为 waitForActivity(pkg, 10000) 进行界面状态监听。

如需适配特定品牌手机的设置页 UI、增加重试逻辑或集成定时任务,可提供具体机型与需求,我将为你调整脚本结构。

ℹ️ 内容由 AI 生成,可能不准确,请注意核实