【HarmonyOS Next】拒绝权限二次申请授权处理

【HarmonyOS Next】拒绝权限二次申请授权处理

一、问题背景:

在鸿蒙系统中,对于用户权限的申请,会有三种用户选择方式:

1.单次使用允许

2.使用应用期间(长时)允许

3.不允许

当用户选择不允许后,再次向用户申请权限,该弹框就不会再显示。因为鸿蒙系统机制处理如此,为了避免骚扰用户。

之前的通用方案是,跳转到应用设置界面,让用户自己去手动设置同意所需的权限。但是这样的操作,对于用户来说是跳出,体验并不是很好。

在此情况下,鸿蒙官方提供了】拒绝权限二次申请授权处理的新方案。

二、解决方案:

综上所述,当应用通过requestPermissionsFromUser()拉起弹框请求用户授权时,用户拒绝授权。应用将无法再次通过该接口申请权限拉起弹框,需要用户在系统应用"设置"的界面中,手动授予权限。

应用此种情况下,可以通过调用requestPermissionOnSetting(),直接拉起权限设置弹框,引导用户授予权限。

dart 复制代码
atManager.requestPermissionOnSetting(context, ['ohos.permission.APPROXIMATELY_LOCATION']).then((data: Array<abilityAccessCtrl.GrantStatus>) => {
  console.info('data:' + JSON.stringify(data));
}).catch((err: BusinessError) => {
  console.error('data:' + JSON.stringify(err));
});

三、源码示例:

直接拉起权限设置半模态弹框,引导用户授予权限。

申请ohos.permission.CAMERA权限

dart 复制代码
import { abilityAccessCtrl, Context, common } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit';

let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();
let context: Context = getContext(this) as common.UIAbilityContext;
atManager.requestPermissionOnSetting(context, ['ohos.permission.CAMERA']).then((data: Array<abilityAccessCtrl.GrantStatus>) => {
  console.info('data:' + JSON.stringify(data));
}).catch((err: BusinessError) => {
  console.error('data:' + JSON.stringify(err));
});
相关推荐
晚秋大魔王25 分钟前
OpenHarmony 开源鸿蒙南向开发——linux下使用make交叉编译第三方库——nettle库
linux·开源·harmonyos
python算法(魔法师版)4 小时前
.NET 在鸿蒙系统上的适配现状
华为od·华为·华为云·.net·wpf·harmonyos
bestadc6 小时前
鸿蒙 UIAbility组件与UI的数据同步和窗口关闭
harmonyos
枫叶丹46 小时前
【HarmonyOS Next之旅】DevEco Studio使用指南(二十二)
华为·harmonyos·deveco studio·harmonyos next
ax一号街阿楠8 小时前
华为FAT AP配置 真机
网络·华为·智能路由器
吗喽对你问好8 小时前
华为5.7机考第一题充电桩问题Java代码实现
java·华为·排序
乱世刀疤11 小时前
深度 |国产操作系统“破茧而出”:鸿蒙电脑填补自主生态空白
华为·harmonyos
博睿谷IT99_15 小时前
华为HCIP-AI认证考试版本更新通知
人工智能·华为
连续讨伐16 小时前
ensp的华为小实验
华为
沙振宇17 小时前
【Web】使用Vue3开发鸿蒙的HelloWorld!
前端·华为·harmonyos