回答
以下是为你编写的完整应用启动与关闭脚本。代码已针对 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("脚本执行完毕");
代码解析
- 启动逻辑:
app.launchApp(appName)会调用系统接口直接拉起应用。如果应用名称拼写错误,会捕获异常并打印日志。 - 关闭逻辑:Android 系统出于安全限制,非 Root 设备无法直接后台杀进程。脚本通过
app.openAppSetting()跳转到应用详情页,利用 UI 自动化查找并点击“强制停止”按钮,最后通过home()返回桌面。 - 兼容性处理:使用
textMatches配合正则表达式匹配不同品牌手机的按钮文案(如小米、华为、OPPO 等文案略有差异)。
使用步骤
- 打开 Hamibot 客户端,新建脚本并粘贴上述代码。
- 修改
var targetApp = "微信";中的名称为你需要测试的应用(支持中文名称或包名,如com.tencent.mm)。 - 确保手机已开启 无障碍服务 和 悬浮窗权限。
- 点击运行,观察底部日志输出。日志会显示每一步的执行结果。
关键注意事项
- 权限要求:脚本依赖无障碍服务读取界面元素,首次运行需在系统设置中授权 Hamibot 无障碍权限。
- 系统差异:部分定制系统(如 MIUI、ColorOS)的应用详情页布局不同。如果提示“未找到关闭按钮”,可在 Hamibot 的“布局分析”工具中查看实际按钮的
text属性,并修改正则表达式/强制停止|结束运行/。 - 执行间隔:
sleep(3000)用于等待应用冷启动。如果目标应用启动较慢,可适当增加毫秒数。 - 脚本退出清理:若后续需要扩展功能,建议在脚本末尾添加
events.on('exit', function() { log('脚本已退出'); });,确保异常中断时资源能被正确回收。
按照上述步骤操作即可稳定运行。如需调整匹配规则或批量处理多个应用,可随时提供具体需求,我会为你优化代码结构。
ℹ️ 内容由 AI 生成,可能不准确,请注意核实