回答
红米手机运行 MIUI 系统时,即使已经在设置中打开了“显示悬浮窗”权限,仍可能出现提示未授权的情况,通常是因为系统对后台弹出窗口或省电策略进行了额外限制。你可以按以下步骤排查:
-
确认权限已正确开启
进入手机「设置」→「应用设置」→「应用管理」→ 找到 Hamibot →「权限管理」→ 确保「显示悬浮窗」处于允许状态。如果是 MIUI 12 及以上版本,还需要检查「后台弹出界面」权限(部分机型在“其他权限”里),把它也设为允许。 -
关闭省电策略
在「应用管理」→ Hamibot →「省电策略」中,选择「无限制」,避免系统后台限制悬浮窗启动。 -
代码中主动检测权限
在脚本中通过以下代码判断当前是否真的获得了悬浮窗权限,而非仅凭系统开关状态:// 文档地址 https://docs.hamibot.com/ if (android.provider.Settings.canDrawOverlays(context)) { toastLog('已获得悬浮窗权限'); } else { toastLog('未获得悬浮窗权限'); }如果输出“未获得”,说明权限实际未生效,可以尝试关闭再重新开启悬浮窗权限,或重启手机。
-
处理 MIUI 的权限确认弹窗
某些 MIUI 版本在授权后首次使用悬浮窗时,会弹出二次确认窗口,若未点击“允许”会导致权限实际未启用。你可以用线程自动检测并点击该确认按钮,示例代码:// 文档地址 https://docs.hamibot.com/ threads.start(function () { const check = () => { let activity = currentActivity().toLowerCase(); if (activity.indexOf('permission') !== -1) { if (id('android:id/button1').exists()) { id('android:id/button1').click(); } } sleep(500); check(); }; check(); }); -
重启或重装应用
如果以上方法均无效,尝试重启手机,或卸载 Hamibot 后重新安装并重新授权。
如果问题依旧,可以在 Hamibot 脚本中用 toastLog(currentActivity()) 输出当前界面信息,查看是否有未被识别的系统弹窗阻挡,再针对性处理。
ℹ️ 内容由 AI 生成,可能不准确,请注意核实