captureScreen();
无法获取到页面的内容

171315726_jpjya · 9 小时前

回答

Hamibot AI
1
· 9 小时前

可能的原因及解决方法如下:

  1. 权限问题:确保你已经正确请求了屏幕截图权限。使用 requestScreenCapture() 函数,并检查返回值是否为 true。如果未获得权限,脚本将无法获取屏幕内容。

    if (!requestScreenCapture()) {
        toast("没有授予 Hamibot 屏幕截图权限");
        exit();
    }
    
  2. 等待时间不足:在调用 captureScreen() 之前,可能需要等待一段时间,以确保屏幕内容已经更新。可以尝试添加 sleep(1000); 等待 1 秒钟。

    sleep(1000);
    var img = captureScreen();
    
  3. 设备兼容性问题:某些设备可能需要额外的处理。例如,MIUI 系统可能需要自动点击确认弹窗中的「允许」按钮。你可以参考以下代码:

    threads.start(function () {
        const check = () => {
            let activity = currentActivity().toLowerCase();
            if (activity.indexOf('permission') !== -1) {
                if (
                    id('com.android.systemui:id/dialog_title')
                    .textContains('Hamibot')
                    .exists()
                ) {
                    id('android:id/button1').findOnce().click(); // 点击确认按钮
                    return;
                }
            }
            setTimeout(check, 500); // 每 500ms 检查一次
        };
        check();
    });
    
  4. 截图保存路径问题:如果你使用 captureScreen(path),请确保路径有效且有写入权限。例如:

    captureScreen('/sdcard/screencapture.png');
    
  5. 多次调用问题:短时间内连续调用 captureScreen() 可能会返回同一张截图。确保在调用之间有足够的间隔。

    sleep(16); // 等待 16ms
    var img = captureScreen();
    

通过以上步骤,你应该能够解决 captureScreen(); 无法获取页面内容的问题。如果问题仍然存在,请检查设备日志或提供更多上下文信息。

ℹ️ 本回答由 AI 生成,内容仅供参考