鸿蒙权限管理:受限权限申请(六)
摘要:受限权限是系统为保护用户隐私设置的敏感权限,需通过应用市场(AGC)审核才能使用。申请流程包括:确认权限是否受限、准备材料、申请Profile文件、配置声明、用户授权(如需)和上架审核。开发者需优先考虑替代方案,仅特殊场景才可申请。注意事项包括严格审核使用场景、提供完整说明材料,违规将导致安装失败或上架驳回。调试阶段可使用自动签名,发布阶段必须走正式申请流程。
本文同步发表于我的微信公众号,微信搜索 程语新视界 即可关注,每个工作日都有文章更新
一、受限权限
受限权限是指默认不允许普通应用申请,只有在特殊场景下,通过应用市场(AGC)审核后才能使用的权限。
受限权限的特点
| 特点 | 说明 |
|---|---|
| 默认不可用 | 普通应用默认无法申请 |
| 需要审核 | 必须通过AGC审核才能使用 |
| 场景限制 | 仅限特殊场景使用 |
| 上架管控 | 上架时会严格审核 |
为了保护用户隐私和系统安全,系统将一些敏感度极高的权限设置为受限开放。这些权限如果被滥用,可能对用户造成严重的影响。
申请原则
在申请前,请审视是否符合受限权限的使用场景。开发者应优先使用Picker/控件等替代方案,仅少量符合特殊场景的应用被允许申请受限权限。
二、受限权限列表
可以通过受限开放权限列表查询:
-
哪些权限属于受限开放
-
每个权限的可用场景
-
推荐的替代方案
提示:必须查询受限开放权限列表确认开发的应用是否符合使用场景,如果不符合要求,应用的上架申请将被驳回。
三、申请前的准备工作
在申请受限权限前,需要:
-
查阅权限列表:确认要申请的权限是否属于受限开放
-
阅读使用场景:每个权限都有明确的可用场景说明
-
评估替代方案:是否有Picker/控件等替代方案
-
准备申请材料:权限说明文档、视频说明等
如果应用场景不符合要求,但试图在配置文件中声明此类权限,将会导致:
-
安装失败:应用无法安装
-
上架驳回:应用市场审核不通过
四、申请步骤
申请流程图
步骤1:确认权限是否受限开放
↓
步骤2:在AGC申请Profile文件并申请权限
↓
步骤3:下载Profile文件用于签名
↓
步骤4:在module.json5中声明权限
↓
步骤5:如果是user_grant权限,向用户申请授权
↓
步骤6:应用上架审核
步骤1:确认权限是否受限开放
查阅受限开放权限列表,确认:
-
该权限是否属于受限开放
-
自己的应用是否符合使用场景
-
是否有替代方案
步骤2:在AGC申请Profile文件
在应用市场(AGC)侧申请Profile文件,并同步申请使用相应受控权限。
详细步骤请参阅:申请发布Profile
关键点:
-
在"添加Profile页面"时,必须申请使用相应权限
-
请确保提供的场景和功能信息准确
-
如果权限超出申请范围,将影响上架
步骤3:下载Profile文件
申请通过后,下载Profile文件,用于后续的应用签名信息配置。
步骤4:在配置文件中声明权限
在module.json5配置文件中声明需要申请的权限。
{
"module": {
"requestPermissions": [
{
"name": "ohos.permission.READ_MEDIA", // 受限权限示例
"reason": "$string:read_media_reason",
"usedScene": {
"abilities": ["EntryAbility"],
"when": "inuse"
}
}
]
}
}
步骤5:向用户申请授权(如果需要)
通过权限列表中的"授权方式"字段,判断是否需要用户授权:
| 授权方式 | 是否需要用户授权 |
|---|---|
| system_grant | 不需要,安装时自动授予 |
| user_grant | 需要,运行时弹窗申请 |
| manual_settings | 需要,引导用户去设置 |
如果是user_grant权限,还需要通过弹窗向用户申请授权。
import { abilityAccessCtrl, common, Permissions } from '@kit.AbilityKit';
async function requestPermission(permission: Permissions, context: common.UIAbilityContext) {
let atManager = abilityAccessCtrl.createAtManager();
try {
let result = await atManager.requestPermissionsFromUser(context, [permission]);
if (result.authResults[0] === 0) {
console.info('用户授权成功');
} else {
console.warn('用户拒绝授权');
}
} catch (error) {
console.error('申请权限失败', error);
}
}
步骤6:应用上架审核
在应用上架时,应用市场将根据应用的使用场景审核是否可以使用对应的受限权限。
需要准备的材料:
-
为每个受限权限项填写相应的权限说明
-
上传视频说明使用场景
详情请见:发布HarmonyOS应用
五、调试与发布的区别
调试阶段
在调试阶段,可以通过DevEco Studio自动签名完成申请。
# DevEco Studio中
Build > Generate Key and CSR...
在自动签名的过程中,将由DevEco Studio完成向AGC申请受限权限的步骤,开发者可直接使用。
具体请参考:自动签名-操作步骤
发布阶段
在发布阶段,必须根据申请发布Profile完成受限权限的手动申请。
不能依赖自动签名,必须走正式申请流程。
六、注意事项
审核要求
| 审核项 | 要求 |
|---|---|
| 使用场景 | 必须符合权限列表中的可用场景 |
| 权限说明 | 需要为每个权限填写说明 |
| 视频证明 | 需要上传视频说明使用场景 |
| 权限范围 | 不能超出申请的范围 |
常见驳回原因
| 原因 | 说明 |
|---|---|
| 场景不符 | 应用场景不符合权限的可用场景 |
| 替代方案 | 存在Picker/控件等替代方案却未使用 |
| 说明不清 | 权限使用理由不明确 |
| 超范围使用 | 申请的权限超出了实际使用的范围 |
备注:
如果应用未申请相应的权限证书,却试图在配置文件中声明此类权限,将会导致应用安装失败。
请确保应用申请受限开放权限时提供的场景和功能信息准确。如果应用内使用的受限开放权限超出您申请的范围,或申请权限后使用的功能和场景超出可使用的范围,将影响您的应用上架。
总结
申请流程速查表
| 步骤 | 操作 | 注意事项 |
|---|---|---|
| 1 | 确认权限是否受限开放 | 查阅受限开放权限列表 |
| 2 | 确认使用场景 | 必须符合可用场景 |
| 3 | 准备申请材料 | 权限说明、视频等 |
| 4 | AGC申请Profile | 同时申请权限 |
| 5 | 下载Profile | 用于签名 |
| 6 | 配置文件声明 | module.json5 |
| 7 | 向用户申请(如需) | user_grant权限 |
| 8 | 应用上架 | 审核通过 |
原则
优先使用替代方案,仅特殊场景才申请受限权限
总之一句话:受限权限申请 = 确认场景符合 + AGC申请Profile + 配置文件声明 + 上架审核
更多推荐




所有评论(0)