【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));
});
相关推荐
特立独行的猫a2 分钟前
HarmonyOS 鸿蒙系统自带的 SymbolGlyph 图标组件详解
华为·harmonyos·图标·symbolglyph
2501_919749032 分钟前
鸿蒙:使用EventHub实现多模块之间的通信
华为·harmonyos
2501_919749036 小时前
鸿蒙:使用Emitter进行线程间通信
华为·harmonyos
SuperHeroWu78 小时前
【HarmonyOS 6】仿AI唤起屏幕边缘流光特效
华为·harmonyos·特效·鸿蒙6.0·流光·ai唤起·屏幕边缘
gcios10 小时前
鸿蒙-flutter 混合开发
harmonyos
特立独行的猫a10 小时前
HarmonyOS应用开发之界面列表不刷新问题Bug排查记:从现象到解决完整记录
华为·bug·harmonyos·ui刷新
安卓开发者11 小时前
鸿蒙Next的UI国际化与无障碍适老化实践:构建全球包容的数字世界
ui·华为·harmonyos
云天徽上15 小时前
【数据可视化-106】华为2025上半年财报分析:用Python和Pyecharts打造炫酷可视化大屏
开发语言·python·华为·信息可视化·数据分析·pyecharts
爱笑的眼睛111 天前
深入剖析 HarmonyOS ArkUI 声明式开发:状态管理艺术与最佳实践
华为·harmonyos
花先锋队长1 天前
为何三折叠手机只有华为可以?看华为Mate XTs非凡大师就知道
华为·智能手机