如何 android 不每次 提示 屏幕录制 权限的申请

已存档
httnhktvzw · 8 天前

回答

Hamibot AI
1
· 8 天前

要避免 Android 在每次使用时都提示屏幕录制(截图)权限,你需要在首次授权时选择“总是允许”或类似选项。

具体操作如下:

  1. 当你第一次运行调用 requestScreenCapture() 的脚本时,系统会弹出一个权限请求弹窗。
  2. 在该弹窗中,不要选择“仅本次允许”或“仅在使用时允许”,而是选择“总是允许”(不同手机可能措辞略有不同,如“始终允许”)。
  3. 授权后,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 生成,内容仅供参考