HarmonyOS鸿蒙Next中您的应用在用户拒绝相机/麦克风权限后,存在重新运行时弹窗申请权限问题,不符合相关法律法规要求
HarmonyOS鸿蒙Next中您的应用在用户拒绝相机/麦克风权限后,存在重新运行时弹窗申请权限问题,不符合相关法律法规要求 上架审核报错:
您的应用在用户拒绝【相机/麦克风】权限后,存在重新运行时弹窗申请权限问题,不符合相关法律法规要求。
这个应该如何更改呢?
开发者您好,应用首启时若权限被用户明确拒绝,那么二次进行权限申请时,不应使用弹窗,并且应避免在应用重启时立即进行弹窗申请。
规则参考:https://developer.huawei.com/consumer/cn/doc/app/faq-05
二次申请权限请参考:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/request-user-authorization-second
更多关于HarmonyOS鸿蒙Next中您的应用在用户拒绝相机/麦克风权限后,存在重新运行时弹窗申请权限问题,不符合相关法律法规要求的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS Next中,应用需遵循权限申请规范:用户拒绝相机/麦克风权限后,应用应在运行时检查权限状态,若已被拒绝则不应再次弹窗请求。正确的做法是引导用户前往系统设置手动开启权限,避免违规频繁弹窗。请修改权限请求逻辑,确保仅当权限状态为“未请求”时才能弹窗。
用户拒绝相机/麦克风权限后,再次运行时直接弹出系统权限申请框,属于重复打扰用户,违反《个人信息保护法》及华为应用市场审核规则。修改核心原则:禁止无场景说明的重复弹窗,仅能在用户主动触发相关功能时请求,如被永久拒绝则须引导至设置页。
合规处理流程(以相机权限为例)
import { abilityAccessCtrl, bundleManager, common, Permissions } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit';
// 1. 检查权限状态
async function checkAndRequestPermission(context: common.UIAbilityContext): Promise<void> {
const atManager = abilityAccessCtrl.createAtManager();
const bundleInfo = await bundleManager.getBundleInfoForSelf(bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_APPLICATION);
const permission: Permissions = 'ohos.permission.CAMERA';
const grantStatus = atManager.checkAccessTokenSync(bundleInfo.appInfo.accessTokenId, permission);
if (grantStatus === abilityAccessCtrl.GrantStatus.PERMISSION_GRANTED) {
// 已授权,执行业务
} else if (grantStatus === abilityAccessCtrl.GrantStatus.PERMISSION_DENIED) {
// 2. 判断是否首次拒绝(可再次弹窗)还是永久拒绝
const canRequest = atManager.isPermissionRequestDenied(context, permission); // API 11+
if (canRequest) {
// 用户仅拒绝未勾选“不再提醒”,可在用户主动点击时再次请求
atManager.requestPermissionsFromUser(context, [permission]).then((result) => {
if (result.authResults[0] === 0) {
// 授权成功
} else {
// 拒绝,可提示功能受限但不强弹
}
});
} else {
// 3. 永久拒绝:弹出自定义对话框,引导用户去设置
showSettingsDialog(context);
}
}
}
// 自定义对话框引导设置
function showSettingsDialog(context: common.UIAbilityContext): void {
AlertDialog.show({
title: '需要相机权限',
message: '该功能需要相机权限,请在设置中开启',
autoCancel: true,
buttons: [
{ text: '取消', color: '#999' },
{
text: '去设置',
color: '#007DFF',
action: () => {
context.startAbility({
bundleName: 'com.huawei.hmos.settings',
abilityName: 'com.huawei.hmos.settings.MainAbility',
uri: 'application_info_entry',
parameters: {
/** 可跳过应用列表直接进入本应用详情页 */
pushParams: context.abilityInfo.bundleName
}
});
}
}
]
});
}
关键点说明
- 使用
isPermissionRequestDenied判断用户是否勾选“禁止后不再询问”,若已永久拒绝则调用自定义对话框。 - 权限请求必须绑定在用户主动操作(如点击“拍照”按钮)上,禁止应用启动或页面切换时自动弹出。
- 若用户仅临时拒绝,可允许再次请求,但须有功能前置说明(如按钮旁提示“需要开启相机”)。
- 弹窗引导至设置页时,需提供取消选项,不可强制跳转。
按以上逻辑修改即可通过审核。


