【HarmonyOS Next】拒绝权限二次申请授权处理
2025-06-30 22:49:30
104次阅读
0个评论
【HarmonyOS Next】拒绝权限二次申请授权处理
一、问题背景:
在鸿蒙系统中,对于用户权限的申请,会有三种用户选择方式: 1.单次使用允许 2.使用应用期间(长时)允许 3.不允许
当用户选择不允许后,再次向用户申请权限,该弹框就不会再显示。因为鸿蒙系统机制处理如此,为了避免骚扰用户。
之前的通用方案是,跳转到应用设置界面,让用户自己去手动设置同意所需的权限。但是这样的操作,对于用户来说是跳出,体验并不是很好。
在此情况下,鸿蒙官方提供了】拒绝权限二次申请授权处理的新方案。
二、解决方案:
综上所述,当应用通过requestPermissionsFromUser()拉起弹框请求用户授权时,用户拒绝授权。应用将无法再次通过该接口申请权限拉起弹框,需要用户在系统应用“设置”的界面中,手动授予权限。
应用此种情况下,可以通过调用requestPermissionOnSetting(),直接拉起权限设置弹框,引导用户授予权限。
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权限
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));
});
00
- 1回答
- 0粉丝
- 0关注
相关话题
- 鸿蒙开发:申请授权权限
- HarmonyOS Next 之HTTP 请求二次封装实战
- 【HarmonyOS】鸿蒙系统中应用权限等级介绍、定义、申请授权讲解
- OpenHarmony:Har工程依赖库接口二次导出
- 【HarmonyOS NEXT】ACL 受限权限申请
- 鸿蒙开发:权限授权封装
- 【HarmonyOS NEXT】权限申请及应用设置页跳转
- 【HarmonyOS NEXT】权限申请及应用设置页跳转
- 鸿蒙开发:权限管理之授权方式
- 如何使用第三方库中的@pura/harmony-utils(V1.3.3)申请授权工具类二
- 《探索 HarmonyOS NEXT(5.0):开启构建模块化项目架构奇幻之旅 ——第三方库的使用:网络请求RCP、二次封装上下拉刷新、弹窗》
- 鸿蒙开发:应用上架第二篇,申请发布证书
- 64.Harmonyos NEXT 图片预览组件之手势处理实现(二)
- 76.HarmonyOS NEXT ImageItemView组件深度剖析:边界处理与高级特性(二)
- 如何使用第三方库中的@pura/harmony-utils(V1.3.3)申请授权工具类一