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
开发者您好,可以按照以下流程进行排查。
背景知识
应用的等级分为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
在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证书。估计是需要提供各种资质,才能给这个权限。
该报错是由于权限未正确声明或配置导致。在HarmonyOS Next中,需要在应用的config.json文件中明确定义所需权限,格式需符合规范。权限名称必须与系统提供的权限完全匹配,且需要在manifest文件中声明权限使用意图。对于敏感权限,还需确保在设备设置中已开启相应权限开关。检查权限名称拼写和大小写是否正确,确认权限类型是否与API级别匹配。
关键点分析:
- 报错"install failed due to grant request permissions failed"表明系统拒绝了权限申请
- 该权限属于系统级权限(protectionLevel=system),需要应用具有系统签名才能使用
解决方案建议:
- 检查您的应用是否具有系统签名(在开发板调试时可临时使用debug签名)
- 如果必须使用该权限,需要将应用配置为系统应用
- 替代方案:考虑使用NFC相关普通权限如ohos.permission.NFC_TAG
您可以在开发板的/system/etc/permissions目录下查看权限定义文件,确认MANAGE_SECURE_SETTINGS的protectionLevel。