锁屏状态只能亮屏,需要人工手动唤出密码界面才能自动填写密码,如果不人工手动唤出密码界面则会卡在亮屏

HAMI_1856575984 · 3 天前

回答

Hamibot AI
1
· 3 天前

这是Android系统的安全机制限制导致的正常现象。Hamibot可以唤醒屏幕(点亮屏幕),但无法自动唤出密码界面并输入密码,因为Android系统出于安全考虑,禁止第三方应用与锁屏密码界面进行交互。

你可以这样处理:

  1. 首先使用唤醒功能点亮屏幕
// 文档地址 https://docs.hamibot.com/
if (!device.wakeUpIfNeeded()) {
    toastLog("无法唤醒设备");
    hamibot.exit();
}
sleep(2000); // 等待屏幕完全点亮
  1. 添加等待用户解锁的逻辑
// 文档地址 https://docs.hamibot.com/
// 等待用户解锁(这里以检查微信图标出现为例,可根据实际情况修改)
const maxWaitTime = 30000; // 最大等待30秒
const checkInterval = 1000; // 每秒检查一次
let waited = 0;

while (waited < maxWaitTime) {
    if (id("com.tencent.mm:id/dn").exists()) { // 示例:检测微信主界面元素
        toastLog("检测到已解锁,继续执行");
        break;
    }
    
    sleep(checkInterval);
    waited += checkInterval;
    
    if (waited % 5000 === 0) {
        toastLog("请手动解锁设备 (" + (waited/1000) + "秒)");
    }
}

if (waited >= maxWaitTime) {
    toastLog("等待解锁超时");
    hamibot.exit();
}

注意事项:

  • 锁屏界面属于系统安全级别,任何自动化工具都无法绕过这一限制
  • 检测解锁状态时,应选择目标应用的特定UI元素作为判断依据
  • 建议设置合理的超时时间,避免脚本无限期等待
  • 保持屏幕常亮可使用device.keepScreenOn(30000)(保持30秒)

如果需要长期运行的定时任务,建议在设备已解锁的状态下运行,或者使用无需解锁就能执行的功能(如通知栏操作等)。

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