HarmonyOS鸿蒙Next中关于权限申请的简单应用

HarmonyOS鸿蒙Next中关于权限申请的简单应用 应用开发中,往往需要进行权限的动态申请,并由于安全问题,一些敏感权限仅能在使用时由用户授权访问。

现在较为常见的高敏感权限例如定位,摄像头,wifi 信息等,这类型的权限主要在官方文档 应用权限组列表 中,

而常用的摄像头拍摄并返回图片的功能中,我们需要 2 个用户授予的动态权限:

ohos.permission.CAMERA 以及 ohos.permission.READ_IMAGEVIDEO

下面这个简单的例子可以打开摄像头并返回图片

import abilityAccessCtrl from '@ohos.abilityAccessCtrl'

/**
 * 打开摄像头拍照并返回图片
 */
takePhoto() {
  // 获取上下文
  const context = this as common.UIAbilityContext
  // 申请受限权限
  await abilityAccessCtrl.createAtManager()
    .requestPermissionsFromUser(context, ['ohos.permission.CAMERA', 'ohos.permission.READ_IMAGEVIDEO'])
  // 打开相机拍照
  const result = await context.startAbilityForResult({ action: "ohos.want.action.imageCapture" })
  // 返回照片uri
  return result.want.uri
}

当然了,最新版本的 Picker 组件,可以快速并且不需要受限权限的方式,让我们拉起系统图片应用选择界面

let uris: Array<string> = [];
const photoViewPicker = new photoAccessHelper.PhotoViewPicker();
photoViewPicker.select(photoSelectOptions).then((photoSelectResult: photoAccessHelper.PhotoSelectResult) => {
  uris = photoSelectResult.photoUris;
  console.info('photoViewPicker.select to file succeed and uris are:' + uris);
}).catch((err: BusinessError) => {
  console.error(`Invoke photoViewPicker.select failed, code is ${err.code}, message is ${err.message}`);
})

这样就可以和鸿蒙系统更加快捷并且无敏感授权的情况在进行图片获取。

在用户体验上,鸿蒙 Next 确实是下了不少功夫的,为贴心的官方点赞👍


更多关于HarmonyOS鸿蒙Next中关于权限申请的简单应用的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

在HarmonyOS鸿蒙Next中,权限申请是应用开发中的一个重要环节。鸿蒙系统提供了完善的权限管理机制,开发者需要在应用中使用权限时,按照系统要求进行申请。

  1. 权限声明:在应用的config.json文件中,开发者需要声明应用所需的所有权限。例如,如果应用需要访问网络,则需要声明ohos.permission.INTERNET权限。

    {
      "module": {
        "reqPermissions": [
          {
            "name": "ohos.permission.INTERNET"
          }
        ]
      }
    }
    
  2. 动态权限申请:对于敏感权限(如位置、相机、麦克风等),开发者需要在运行时动态申请。鸿蒙提供了requestPermissionsFromUser方法来实现这一功能。

    import abilityAccessCtrl from '[@ohos](/user/ohos).abilityAccessCtrl';
    
    let permissions = ['ohos.permission.LOCATION'];
    let atManager = abilityAccessCtrl.createAtManager();
    atManager.requestPermissionsFromUser(this.context, permissions, (err, data) => {
      if (err) {
        console.error('Request permissions failed.');
      } else {
        console.log('Request permissions succeeded.');
      }
    });
    
  3. 权限检查:在申请权限之前,开发者可以使用checkAccessToken方法检查当前应用是否已经拥有所需的权限。

    let permission = 'ohos.permission.LOCATION';
    let atManager = abilityAccessCtrl.createAtManager();
    let tokenInfo = atManager.verifyAccessToken(this.context, permission);
    if (tokenInfo.authList.indexOf(permission) !== -1) {
      console.log('Permission granted.');
    } else {
      console.log('Permission not granted.');
    }
    
  4. 权限回调:当用户对权限申请做出响应时,系统会回调requestPermissionsFromUser方法中的回调函数,开发者可以根据回调结果进行相应的处理。

  5. 权限管理:鸿蒙系统提供了权限管理界面,用户可以在设置中查看和管理应用的权限。开发者应确保应用在未获得权限时能够优雅地处理相关功能。

通过以上步骤,开发者可以在HarmonyOS鸿蒙Next中完成权限的申请与管理,确保应用在符合系统安全要求的前提下正常运行。

更多关于HarmonyOS鸿蒙Next中关于权限申请的简单应用的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,权限申请是确保应用安全和用户隐私的重要环节。开发者需要在应用的配置文件中声明所需的权限,并在运行时通过requestPermissionsFromUser方法动态申请权限。例如,若应用需要访问相机,需在config.json中声明ohos.permission.CAMERA权限,并在代码中调用requestPermissionsFromUser方法。用户同意后,应用方可使用相关功能。权限管理遵循最小化原则,仅申请必要的权限,确保用户数据安全。

回到顶部