回答
在 Hamibot 中运行 ADB 命令,需通过 shell() 函数调用。Hamibot 的 shell() 本质等同于执行 adb shell 命令,但必须设备已 root 或使用无障碍模式(无需 root)。
1. 基本语法
// 文档地址 https://docs.hamibot.com/
// 执行普通 shell 命令(无需 root)
let result = shell("命令");
// 以 root 权限执行(仅限已 root 设备)
let result = shell("命令", true);
2. 常用示例
启动应用(等效 adb shell am start)
shell("am start -n com.tencent.mm/.ui.LauncherUI");
发送广播
shell("am broadcast -a android.intent.action.BOOT_COMPLETED");
获取系统属性
let model = shell("getprop ro.product.model").string();
toastLog("机型: " + model);
文件操作(需 root)
// 删除文件(root)
shell("rm /sdcard/test.txt", true);
输入文本(部分设备支持)
shell("input text 'hello'");
模拟按键
shell("input keyevent KEYCODE_HOME"); // 回到桌面
3. 注意事项
- 非 root 设备:只能执行普通 shell 命令(如
am、pm、input等),不能访问受保护目录 - 返回结果处理:
let res = shell("ls /sdcard"); if (res.code === 0) { toastLog(res.string()); // 输出结果 } - 路径空格处理:路径含空格需加引号,如
shell('ls "/sdcard/My Folder"') - 权限限制:Android 10+ 对后台 shell 命令限制更严,建议优先使用 Hamibot 原生 API(如
launch(),click())
4. 替代方案建议
多数场景下,无需使用 shell 命令:
- 启动 App → 用
app.launch("包名") - 返回桌面 → 用
home() - 按键事件 → 用
KeyCode("KEYCODE_BACK")
仅在原生 API 无法满足时(如调用特定 am/pm 命令),才使用 shell()。
ℹ️ 内容由 AI 生成,可能不准确,请注意核实