HarmonyOS鸿蒙Next中为什么隐私弹窗会顶掉权限申请
HarmonyOS鸿蒙Next中为什么隐私弹窗会顶掉权限申请 我的上架请求被驳回了,因为第一次进入应用弹出隐私弹窗后,后面的权限申请弹窗就弹不出来了,只能第二次运行才弹的出来,问题是我的源码里面是没有隐私弹窗的,这是自动加的,我无法在自己的设备上复现问题,有大佬能解答下吗,下面是entry里面权限申请的代码。
aboutToAppear(): void {
let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();
try {
let context = getContext(this);
atManager.requestPermissionsFromUser(context, ['ohos.permission.ACCESS_BLUETOOTH'], (err: BusinessError, data: PermissionRequestResult) => {
console.info('data:' + JSON.stringify(data));
console.info('data permissions:' + data.permissions);
console.info('data authResults:' + data.authResults);
console.info(JSON.stringify(err));
});
} catch (err) {
console.log(`catch err->${JSON.stringify(err)}`);
}
const context: common.UIAbilityContext = getContext(this) as common.UIAbilityContext;
const permissions: Array<Permissions> = ['ohos.permission.APPROXIMATELY_LOCATION'];
atManager.requestPermissionsFromUser(context, permissions).then((data) => {
let grantStatus: Array<number> = data.authResults;
let length: number = grantStatus.length;
for (let i = 0; i < length; i++) {
if (grantStatus[i] === 0) {
}
}
}).catch((err: BusinessError) => {
console.error(`Failed to request permissions from user. Code is ${err.code}, message is ${err.message}`);
})
}
更多关于HarmonyOS鸿蒙Next中为什么隐私弹窗会顶掉权限申请的实战教程也可以访问 https://www.itying.com/category-93-b0.html
太离谱,我的APP四天驳回了四次,每次这个问题改好,下一次又提出上个审核没有说的问题,这个隐私弹窗自动添加的又不能在自己的机器上复现,个人开发者本来改就要耗费很多时间,审核的时候能不能一次性说完,每次上午驳回上午提交修改晚上到下班时间才发审核通知,动态消息也没人回,给人一种故意找茬的感觉
更多关于HarmonyOS鸿蒙Next中为什么隐私弹窗会顶掉权限申请的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS Next中,隐私弹窗和权限申请弹窗属于系统级的安全交互流程,隐私弹窗优先级更高。当应用同时触发隐私声明和权限请求时,系统会优先展示隐私弹窗(GDPR合规要求),待用户处理完隐私协议后,权限申请弹窗才会按流程弹出。这是系统设计的安全机制,防止应用在用户未确认隐私协议前获取权限。两个弹窗不会同时出现,避免用户交互冲突。
在HarmonyOS Next中,系统会自动为应用添加隐私弹窗,这是平台的安全机制要求。您遇到的问题是由于系统隐私弹窗和权限申请弹窗的显示机制冲突导致的。
问题分析:
- 系统隐私弹窗具有最高优先级,会阻塞后续所有弹窗。
- 权限申请需要在隐私协议同意后才能进行。
- 当前代码在
aboutToAppear
中立即请求权限,此时隐私弹窗可能还未完成。
解决方案:
- 将权限申请逻辑移到隐私弹窗确认后的回调中。
- 或者延迟权限申请,确保在隐私弹窗显示完成后再请求。
建议修改代码结构,确保权限申请在用户确认隐私协议后再执行。可以使用setTimeout
延迟请求,或监听隐私弹窗完成事件。