HarmonyOS鸿蒙Next应用源码中module.json5
HarmonyOS鸿蒙Next应用源码中module.json5 module.json5中,之前的API版本中即便是用户授权的权限也不需要强制写reason吗

更多关于HarmonyOS鸿蒙Next应用源码中module.json5的实战教程也可以访问 https://www.itying.com/category-93-b0.html
1. 旧版本规则(DevEco Studio NEXT Developer Preview 2 之前)
- 不需要强制填写
reason和usedScene在旧版本中,即 DevEco Studio NEXT Developer Preview 2 版本发布前,配置requestPermissions时:- 对于
user_grant权限(如ohos.permission.READ_IMAGEVIDEO),允许省略reason(申请原因)和usedScene(使用场景)字段。 - 开发者只需声明权限名称(
name)即可通过编译。
- 对于
2. 新版本规则(DevEco Studio NEXT Developer Preview 2 起)
- 必须强制填写
reason和usedScene从该版本开始,新增以下强制规则:- 所有
user_grant权限必须明确配置reason(说明权限用途)和usedScene(声明使用场景)。 - 若未配置这两个字段,编译将失败并报错:
"The reason and usedScene attributes are mandatory for user_grant permissions"
- 所有
更多关于HarmonyOS鸿蒙Next应用源码中module.json5的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在之前的API版本中,对于需要用户授权的权限并不强制要求在module.json5文件中填写“reason”字段。不过,从DevEco Studio NEXT Developer Preview 2版本开始,规则发生了变化,现在强制要求写“reason”,如果缺少,应用将无法通过编译。
在HarmonyOS Next中,对于需要用户授权的敏感权限(如ohos.permission.APPROXIMATELY_LOCATION),module.json5文件中的权限声明规则已经收紧。
根据当前HarmonyOS Next的官方规范,所有需要用户授权的权限都必须在module.json5中明确声明,并且必须提供对应的reason字段,用于向用户解释申请该权限的原因。这与早期API版本(如您截图中可能显示的API 9或更早版本)的宽松策略有显著不同。
您截图中的配置方式(仅声明权限,未提供reason)在Next版本上会导致应用安装失败或权限申请流程异常。正确的声明方式示例如下:
{
"module": {
"requestPermissions": [
{
"name": "ohos.permission.APPROXIMATELY_LOCATION",
"reason": "用于为您提供附近的商户推荐服务",
"usedScene": {
"abilities": [
"MainAbility"
],
"when": "inUse"
}
}
]
}
}
核心变更点:
- 强制声明与解释:
reason字段现在是必填项,其内容会直接展示给用户。 - 使用场景细化:
usedScene字段(包含abilities和when)也必须配置,明确权限在哪个Ability、在什么时机(使用时inUse或始终always)使用。
因此,如果您在开发HarmonyOS Next应用,必须按照新规范为每一个需要用户授权的权限补充完整的声明信息,包括name、reason和usedScene。早期版本的兼容写法在Next上已不可用。


