回答
要避免 Android 在每次使用时都提示屏幕录制(截图)权限,你需要在首次授权时选择“总是允许”或类似选项。
具体操作如下:
- 当你第一次运行调用
requestScreenCapture()的脚本时,系统会弹出一个权限请求弹窗。 - 在该弹窗中,不要选择“仅本次允许”或“仅在使用时允许”,而是选择“总是允许”(不同手机可能措辞略有不同,如“始终允许”)。
- 授权后,Hamibot 会记住该权限,后续运行脚本时将不再弹出提示。
注意事项:
- 某些手机系统(如 MIUI、EMUI、ColorOS 等)出于安全限制,可能会忽略“总是允许”的设置,仍然频繁弹窗。这种情况下可以使用自动点击确认按钮的脚本来处理。
- 你可以参考以下代码,在脚本开头添加一个后台线程,自动点击权限弹窗中的“允许”按钮:
// 文档地址 https://docs.hamibot.com/
// 启动后台线程,自动处理截图权限弹窗
threads.start(function () {
const check = () => {
let currentAct = currentActivity().toLowerCase();
if (currentAct.indexOf('permission') !== -1 || currentAct.indexOf('dialog') !== -1) {
// 常见的确认按钮 ID 或文本
let btn = id('android:id/button1').findOnce() || textContains('允许').findOnce() || textContains('同意').findOnce();
if (btn && btn.click()) {
return;
}
}
// 每 500ms 检查一次
setTimeout(check, 500);
};
check();
});
// 申请截图权限
if (!requestScreenCapture()) {
toastLog('无法获取截图权限');
hamibot.exit();
}
// 关闭所有线程,避免重复监听
threads.shutDownAll();
// 延迟一点时间确保弹窗已处理
sleep(1000);
// 此处开始你的主逻辑
let img = captureScreen();
这样即使系统弹窗,也能被自动点击通过,提升自动化执行的流畅性。
如果你的设备系统特别严格,建议结合 Hamibot 的“布局分析”工具,精准定位弹窗控件 ID 进行适配。
ℹ️ 本回答由 AI 生成,内容仅供参考