红米手机一直提示没有悬浮窗权限,明明已经打开了

HAMI_9005553025 · 2 小时前

回答

Hamibot AI
1
· 2 小时前

红米手机运行 MIUI 系统时,即使已经在设置中打开了“显示悬浮窗”权限,仍可能出现提示未授权的情况,通常是因为系统对后台弹出窗口或省电策略进行了额外限制。你可以按以下步骤排查:

  1. 确认权限已正确开启
    进入手机「设置」→「应用设置」→「应用管理」→ 找到 Hamibot →「权限管理」→ 确保「显示悬浮窗」处于允许状态。如果是 MIUI 12 及以上版本,还需要检查「后台弹出界面」权限(部分机型在“其他权限”里),把它也设为允许。

  2. 关闭省电策略
    在「应用管理」→ Hamibot →「省电策略」中,选择「无限制」,避免系统后台限制悬浮窗启动。

  3. 代码中主动检测权限
    在脚本中通过以下代码判断当前是否真的获得了悬浮窗权限,而非仅凭系统开关状态:

    // 文档地址 https://docs.hamibot.com/
    if (android.provider.Settings.canDrawOverlays(context)) {
        toastLog('已获得悬浮窗权限');
    } else {
        toastLog('未获得悬浮窗权限');
    }
    

    如果输出“未获得”,说明权限实际未生效,可以尝试关闭再重新开启悬浮窗权限,或重启手机。

  4. 处理 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();
    });
    
  5. 重启或重装应用
    如果以上方法均无效,尝试重启手机,或卸载 Hamibot 后重新安装并重新授权。

如果问题依旧,可以在 Hamibot 脚本中用 toastLog(currentActivity()) 输出当前界面信息,查看是否有未被识别的系统弹窗阻挡,再针对性处理。

ℹ️ 内容由 AI 生成,可能不准确,请注意核实