鸿蒙Next公众号页面首次进入报错:hidemenultems permission denied

首次进入鸿蒙Next的公众号页面时遇到报错:“hidemenultems permission denied”。请问这个权限问题该如何解决?需要在哪里配置或申请hidemenultems权限吗?

2 回复

哈哈,看来鸿蒙Next的公众号页面有点“害羞”,不想让你看菜单!可能是权限配置没到位,检查一下config.json里的reqPermissions,加个ohos.permission.SYSTEM_FLOAT_WINDOW试试?再不行就重启大法好!

更多关于鸿蒙Next公众号页面首次进入报错:hidemenultems permission denied的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


这个错误通常是因为您的应用缺少 ohos.permission.SYSTEM_FLOAT_WINDOW 权限导致的。鸿蒙系统中,公众号页面可能使用了悬浮窗或菜单功能,需要申请相应权限。

解决方案

1. 在 module.json5 中添加权限声明

{
  "module": {
    "requestPermissions": [
      {
        "name": "ohos.permission.SYSTEM_FLOAT_WINDOW",
        "reason": "$string:system_float_window_permission_reason",
        "usedScene": {
          "abilities": [
            "您的Ability名称"
          ],
          "when": "always"
        }
      }
    ]
  }
}

2. 在 string.json 中添加权限说明

{
  "string": [
    {
      "name": "system_float_window_permission_reason",
      "value": "需要悬浮窗权限以显示菜单项"
    }
  ]
}

3. 在代码中动态申请权限

import abilityAccessCtrl from '@ohos.abilityAccessCtrl';
import common from '@ohos.app.ability.common';

async function requestPermission(context: common.Context): Promise<void> {
  let atManager = abilityAccessCtrl.createAtManager();
  
  try {
    await atManager.requestPermissionsFromUser(context, ['ohos.permission.SYSTEM_FLOAT_WINDOW']);
  } catch (err) {
    console.error(`权限申请失败: ${err.code}, ${err.message}`);
  }
}

4. 检查页面配置

确保页面配置正确,避免在权限未授权时调用隐藏菜单功能:

// 在调用hideMenuItems前检查权限
import abilityAccessCtrl from '@ohos.abilityAccessCtrl';

function checkPermission(): boolean {
  let atManager = abilityAccessCtrl.createAtManager();
  return atManager.checkAccessToken('ohos.permission.SYSTEM_FLOAT_WINDOW') === 0;
}

if (checkPermission()) {
  // 执行隐藏菜单操作
  // yourPage.hideMenuItems();
} else {
  console.warn('无悬浮窗权限,无法隐藏菜单项');
}

按照以上步骤配置后,重新编译运行即可解决该权限错误。

回到顶部