HarmonyOS鸿蒙Next中添加系统权限后安装应用报错 install failed due to grant request permissions failed

HarmonyOS鸿蒙Next中添加系统权限后安装应用报错 install failed due to grant request permissions failed

我现在用的是 HiHope_DAYU200 开发板,源码是用的是 OHOS_5.0_beta1版本

我开发的普通应用需要调用 nfcController.enableNfc,运行时应用会崩溃,查看log报错Error: Permission denied. An attempt was made to ${enableNfc} forbidden by permission: ${ohos.permission.MANAGE_SECURE_SETTINGS}.

所以,需要用到加上 “ohos.permission.MANAGE_SECURE_SETTINGS” 权限,我在entry/src/main/module.json5中的module属性下添加如下代码

"requestPermissions": [
  {
    "name": "ohos.permission.MANAGE_SECURE_SETTINGS",
    "reason": "$string:MANAGE_SECURE_SETTINGS",
    "usedScene": {
      "abilities": [
        "FormAbility"
      ],
      "when": "inuse"
    }
  }
],

运行时有报错:

Install Failed: error: failed to install bundle. code:9568289 error: install failed due to grant request permissions failed.


更多关于HarmonyOS鸿蒙Next中添加系统权限后安装应用报错 install failed due to grant request permissions failed的实战教程也可以访问 https://www.itying.com/category-93-b0.html

10 回复

开发者您好,可以按照以下流程进行排查。

背景知识

应用的等级分为normal、system_basic和system_core三个等级,默认情况下,应用的APL等级都为normal等级,如果使用了system_basic或system_core等级的权限,将导致报错。 权限机制中的基本概念

问题定位

  • 检查是否在module.json5中申请了受限权限。
  • 检查是否申请的权限等级高于应用默认的等级。
  • 检查引用依赖组件名是否与依赖名保持一致。

分析结论

  • module.json5中申请了受限权限。
  • 申请的权限等级高于应用默认的等级。
  • 引用依赖组件名与依赖名不一致。

修改建议

  • 删除等级高的权限,重新签名及编译。应用服务签名参考:应用/元服务签名
  • 使用自动签名,临时获取提权,打开File->Project Structure ->SingningConfigs,勾选Automatically generate signature,等待重新编译应用,修改完成后,重启DevEco Studio。
  • 当应用需要申请system_basic和system_core等级权限时,需要使用权限机制中的基本概念中的访问控制列表(ACL),参考使用ACL的签名配置指导进行签名,申请调试或发布证书。
    • 在应用的module.json5文件中,声明需要申请的权限。

      "module": { 
        "requestPermissions": [ 
          { 
            "name": "权限名"
          } 
        ] 
      }
      
    • 修改“SDK位置\base\toolchains\lib\UnsgnedReleasedProfileTemplate.json”文件。

      "bundle-info":{
        "developer-id": "OpenHarmony",
        "distribution-certificate": "xxx",
        "bundle-name": "com.OpenHarmony.app.test",
        "apl": "system_basic",
        "app-feature": "hos_system_app"
      },
      "acls": {
        "allowed-acls": [
        ]
      }
      
    • 重新签名及编译。

  • 引用依赖组件名需要与依赖名保持一致。

更多关于HarmonyOS鸿蒙Next中添加系统权限后安装应用报错 install failed due to grant request permissions failed的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


楼主可以在文档上查询一下支持的权限列表: 应用权限列表-应用权限管控-程序访问控制-安全-系统 - 华为HarmonyOS开发者

我查了一下 这个权限是没有开放的

module.json5中添加ACL配置:

"requestPermissions": [
  {
    "name": "ohos.permission.MANAGE_SECURE_SETTINGS",
    "reason": "${string}:MANAGE_SECURE_SETTINGS",
    "usedScene": {
      "abilities": ["FormAbility"],
      "when": "inuse"
    },
    // 新增ACL声明
    "apl": "system_basic" // 根据实际权限等级填写
  }
]

通过DevEco Studio自动生成调试证书后重新编译工程。如果还不行提工单申请白名单试试。

这个权限只能系统应用使用,三方的应用不能使用。

应用权限列表:

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V3/permission-list-0000001281480750-V3

权限的授权方式分为user_grant(用户授权)和system_grant(系统授权),具体请参考应用权限开发概述-权限类型说明

三方应用仅可申请权限级别为normal的权限,级别为system_basic和system_core的权限不对三方应用开放。

| ohos.permission.MANAGE_SECURE_SETTINGS | system_basic | system_grant | 允许应用修改安全类系统设置。 |

那意思是我需要把三方应用变成系统应用吗?我现在源码是用的是 OHOS_5.0_beta1 版本,怎么改成系统应用呢?

系统应用:profile证书中app-feature为hos_system_app的应用,系统应用能调用系统接口。

需要去申请 profile证书。估计是需要提供各种资质,才能给这个权限。

那就是华为不让个人开发者玩呗,还开源,openHarmony怕是不得更新了哦,

Image

OHOS_5.0_beta1/applications/standard/settings/product/phone/src/main/module.json5

setting 里面是有加 ohos.permission.MANAGE_SECURE_SETTINGS 权限的,是需要把普通应用的代码放到系统平台中编译?

该报错是由于权限未正确声明或配置导致。在HarmonyOS Next中,需要在应用的config.json文件中明确定义所需权限,格式需符合规范。权限名称必须与系统提供的权限完全匹配,且需要在manifest文件中声明权限使用意图。对于敏感权限,还需确保在设备设置中已开启相应权限开关。检查权限名称拼写和大小写是否正确,确认权限类型是否与API级别匹配。

关键点分析:

  1. 报错"install failed due to grant request permissions failed"表明系统拒绝了权限申请
  2. 该权限属于系统级权限(protectionLevel=system),需要应用具有系统签名才能使用

解决方案建议:

  1. 检查您的应用是否具有系统签名(在开发板调试时可临时使用debug签名)
  2. 如果必须使用该权限,需要将应用配置为系统应用
  3. 替代方案:考虑使用NFC相关普通权限如ohos.permission.NFC_TAG

您可以在开发板的/system/etc/permissions目录下查看权限定义文件,确认MANAGE_SECURE_SETTINGS的protectionLevel。

回到顶部