HarmonyOS鸿蒙Next中关于requestPermissionsFromUser动态请求权限

HarmonyOS鸿蒙Next中关于requestPermissionsFromUser动态请求权限 参照文档在ETS中有如下代码

Text("相机")
  .fontSize(50)
  .fontWeight(FontWeight.Bold)
  .onClick(() => {
    const permissions: Array<Permissions> = ['ohos.permission.CAMERA']
    abilityAccessCtrl.createAtManager().requestPermissionsFromUser(
      ContextUtil.getInstance().getUIAbility().context,
      permissions
    ).then((data) => {
      LogUtil.getInstance().e(LogTag.TEST,`${data.authResults}`)
      const permissionResult = data.authResults.every((status) => {
      status === 0
      })
      if (permissionResult) {
        //用户全部授权
        LogUtil.getInstance().e(LogTag.TEST,"用户全部授权")
      }else {
        //用户拒绝全部授权或部分授权
        LogUtil.getInstance().e(LogTag.TEST,"用户拒绝全部授权或部分授权")
      }
    })
  })

真机测试,弹出了系统权限框,并选择了仅使用期间允许,但是在回调中任然返回的0,log信息为用户拒绝全部授权或部分授权


更多关于HarmonyOS鸿蒙Next中关于requestPermissionsFromUser动态请求权限的实战教程也可以访问 https://www.itying.com/category-93-b0.html

5 回复
authResults Array<number>
相应请求权限的结果:
- -1:未授权,表示权限已设置,无需弹窗,需要用户在"设置"中修改。
- 0:已授权。
- 2:未授权,表示请求无效,

返回0表示已授权,条件判断语句更改成:if (!permissionResult)

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


感谢大佬,

基本信息

  • 姓名: 张三
  • 年龄: 28
  • 职位: 软件工程师

我的代码中every方法是比较了data.authResults的每一项是否严格等于0,为什么返回的会是false?按道理来说既然每一项均为0,那every返回的应该是true才对。

在HarmonyOS(鸿蒙)Next中,requestPermissionsFromUser 是用于动态请求权限的API。开发者可以通过该API向用户请求应用运行所需的权限。该API通常在应用运行时调用,以确保应用在需要时能够获取必要的权限。

requestPermissionsFromUser 的使用场景包括但不限于访问设备位置、读取联系人、使用相机等敏感权限。开发者需要在应用的配置文件中声明所需的权限,并在运行时通过该API请求用户授权。

该API的调用会触发系统的权限请求对话框,用户可以选择允许或拒绝权限请求。开发者可以通过回调函数处理用户的授权结果,并根据结果调整应用的逻辑。

在鸿蒙Next中,权限管理更加严格,开发者需要遵循最小权限原则,仅请求应用运行所必需的权限。此外,鸿蒙Next还提供了权限使用情况的统计和监控功能,帮助开发者更好地管理权限。

requestPermissionsFromUser 的调用示例代码如下:

import abilityAccessCtrl from '@ohos.abilityAccessCtrl';

let atManager = abilityAccessCtrl.createAtManager();
let permissions: Array<string> = ['ohos.permission.CAMERA', 'ohos.permission.LOCATION'];

atManager.requestPermissionsFromUser(this.context, permissions, (err, data) => {
    if (err) {
        console.error(`Request permissions failed, code is ${err.code}, message is ${err.message}`);
    } else {
        console.info('Request permissions success');
    }
});

在上述代码中,requestPermissionsFromUser 方法用于请求相机和位置权限,并通过回调函数处理授权结果。

在HarmonyOS鸿蒙Next中,requestPermissionsFromUser用于动态请求应用所需的权限。开发者需在config.json中声明权限,并在代码中调用此方法,向用户展示权限请求对话框。用户同意后,应用才能使用相关功能。示例代码如下:

import abilityAccessCtrl from '@ohos.abilityAccessCtrl';

let atManager = abilityAccessCtrl.createAtManager();
atManager.requestPermissionsFromUser(this.context, ['ohos.permission.CAMERA'], (err, data) => {
    if (err) {
        console.error('Request permissions failed');
    } else {
        console.log('Request permissions success');
    }
});

此方法确保应用在运行时获取必要权限,提升用户体验和安全性。

回到顶部