我是计算机小白,想自己写一个应用启动和关闭的脚本,应该怎么写

HAMI_5791309430 · 2 天前

回答

Hamibot AI
1
· 2 天前

以下是为你编写的完整应用启动与关闭脚本。代码已针对 Hamibot 的 Rhino 1.7.15 引擎进行兼容处理,并附带详细注释,你可以直接复制到 Hamibot 编辑器中运行。

// 文档地址 https://docs.hamibot.com/

// 启动应用函数
function launchAppByName(appName) {
  try {
    app.launchApp(appName);
    log("成功启动应用: " + appName);
    return true;
  } catch (e) {
    log("启动失败,请检查应用名称是否正确: " + e);
    return false;
  }
}

// 关闭应用函数
function closeAppByName(appName) {
  var packageName = getPackageName(appName);
  if (!packageName) {
    // 如果传入的是包名,则直接使用
    if (getAppName(appName)) {
      packageName = appName;
    } else {
      log("未找到应用: " + appName);
      return false;
    }
  }

  try {
    // 打开系统应用详情页
    app.openAppSetting(packageName);
    sleep(1000);

    // 查找“强制停止”或“结束运行”按钮(不同手机文案可能不同)
    var forceStopBtn = textMatches(/强制停止|结束运行|强行停止|停止运行/).findOne(3000);
    if (forceStopBtn) {
      forceStopBtn.click();
      sleep(500);
      // 点击确认弹窗
      var confirmBtn = textMatches(/确定|OK|确认|强制停止/).findOne(2000);
      if (confirmBtn) {
        confirmBtn.click();
        log("成功关闭应用: " + appName);
        return true;
      }
    }
    log("未找到关闭按钮,可能应用已在后台或系统界面存在差异");
    return false;
  } catch (e) {
    log("关闭应用时出错: " + e);
    return false;
  } finally {
    // 操作完成后返回桌面
    home();
  }
}

// ================= 使用示例 =================
var targetApp = "微信"; // 修改此处为你需要操作的应用名称或包名

log("开始执行脚本...");
launchAppByName(targetApp);
sleep(3000); // 预留时间等待应用完全启动
closeAppByName(targetApp);
log("脚本执行完毕");

代码解析

  1. 启动逻辑app.launchApp(appName) 会调用系统接口直接拉起应用。如果应用名称拼写错误,会捕获异常并打印日志。
  2. 关闭逻辑:Android 系统出于安全限制,非 Root 设备无法直接后台杀进程。脚本通过 app.openAppSetting() 跳转到应用详情页,利用 UI 自动化查找并点击“强制停止”按钮,最后通过 home() 返回桌面。
  3. 兼容性处理:使用 textMatches 配合正则表达式匹配不同品牌手机的按钮文案(如小米、华为、OPPO 等文案略有差异)。

使用步骤

  1. 打开 Hamibot 客户端,新建脚本并粘贴上述代码。
  2. 修改 var targetApp = "微信"; 中的名称为你需要测试的应用(支持中文名称或包名,如 com.tencent.mm)。
  3. 确保手机已开启 无障碍服务悬浮窗权限
  4. 点击运行,观察底部日志输出。日志会显示每一步的执行结果。

关键注意事项

  • 权限要求:脚本依赖无障碍服务读取界面元素,首次运行需在系统设置中授权 Hamibot 无障碍权限。
  • 系统差异:部分定制系统(如 MIUI、ColorOS)的应用详情页布局不同。如果提示“未找到关闭按钮”,可在 Hamibot 的“布局分析”工具中查看实际按钮的 text 属性,并修改正则表达式 /强制停止|结束运行/
  • 执行间隔sleep(3000) 用于等待应用冷启动。如果目标应用启动较慢,可适当增加毫秒数。
  • 脚本退出清理:若后续需要扩展功能,建议在脚本末尾添加 events.on('exit', function() { log('脚本已退出'); });,确保异常中断时资源能被正确回收。

按照上述步骤操作即可稳定运行。如需调整匹配规则或批量处理多个应用,可随时提供具体需求,我会为你优化代码结构。

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