实现相机权限二次申请鸿蒙示例代码

鸿蒙场景化示例代码技术工程师
发布于 2025-3-14 17:13
浏览
0收藏

本文原创发布在华为开发者社区

介绍

本示例基于程序访问控制管理实现二次向用户申请相机访问权限授权。

实现相机权限二次申请源码链接

效果预览

实现相机权限二次申请鸿蒙示例代码-鸿蒙开发者社区

使用说明

点击“Request Permission”按钮,出现弹窗向用户申请相机访问权限授权,点击“不允许”,再次点击“Request Permission”按钮,出现半屏弹窗二次向用户申请授权。

实现思路

点击“Request Permission”按钮时,通过requestPermissionsFromUser拉起弹框请求用户授权,若用户同意授权,再次点击“Request Permission”按钮不会拉起授权弹框。若用户拒绝授权,再次点击“Request Permission”按钮时,调用requestPermissionOnSetting接口,二次拉起权限设置弹框,引导用户授予权限。核心代码如下,源码参考Index.ets。

Button('Request Permission')
          .onClick(() => {
            let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();
            let context: Context = getContext(this) as common.UIAbilityContext;
            atManager.requestPermissionsFromUser(context, ['ohos.permission.CAMERA'])
              .then((data: PermissionRequestResult) => {
                hilog.info(0x0000, 'testTag', 'data:' + JSON.stringify(data));
                hilog.info(0x0000, 'testTag', 'data permissions:' + data.permissions);
                hilog.info(0x0000, 'testTag', 'data authResults:' + data.authResults);
                hilog.info(0x0000, 'testTag', 'data dialogShownResults:' + data.dialogShownResults);
                if (data.authResults[0] === -1 && !this.firstTime) {
                  atManager.requestPermissionOnSetting(context, ['ohos.permission.CAMERA'])
                    .then((data: Array<abilityAccessCtrl.GrantStatus>) => {
                      hilog.info(0x0000, 'testTag', 'data:' + JSON.stringify(data));
                    })
                    .catch((err: BusinessError) => {
                      hilog.error(0x0000, 'testTag', 'data:' + JSON.stringify(err));
                    });
                }
                this.firstTime = false;
              })
              .catch((err: BusinessError) => {
                hilog.error(0x0000, 'testTag', 'data:' + JSON.stringify(err));
              });
          })
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.

分类
收藏
回复
举报
回复
    相关推荐