回答
可能的原因及解决方法如下:
-
权限问题:确保你已经正确请求了屏幕截图权限。使用
requestScreenCapture()
函数,并检查返回值是否为true
。如果未获得权限,脚本将无法获取屏幕内容。if (!requestScreenCapture()) { toast("没有授予 Hamibot 屏幕截图权限"); exit(); }
-
等待时间不足:在调用
captureScreen()
之前,可能需要等待一段时间,以确保屏幕内容已经更新。可以尝试添加sleep(1000);
等待 1 秒钟。sleep(1000); var img = captureScreen();
-
设备兼容性问题:某些设备可能需要额外的处理。例如,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(); });
-
截图保存路径问题:如果你使用
captureScreen(path)
,请确保路径有效且有写入权限。例如:captureScreen('/sdcard/screencapture.png');
-
多次调用问题:短时间内连续调用
captureScreen()
可能会返回同一张截图。确保在调用之间有足够的间隔。sleep(16); // 等待 16ms var img = captureScreen();
通过以上步骤,你应该能够解决 captureScreen();
无法获取页面内容的问题。如果问题仍然存在,请检查设备日志或提供更多上下文信息。
ℹ️ 本回答由 AI 生成,内容仅供参考