OpenHarmony应用访问控制权限申请开发范例

 📖 查看本文案例

OpenHarmony应用访问控制权限申请开发范例

概念介绍

在应用首次启动时,我们常常遇到,需要申请授权才能使用应用的完整功能,比如在应用首次启动时,会弹窗申请开启位置权限、申请相机权限等,如图所示。本文就以橘子购物示例应用为例,来讲解OpenHarmony应用首次启动申请授权相关的技术点。

OpenHarmony应用框架提供了200+应用权限,在权限列表文件中,我们可以看到每种权限有不同的APL级别、权限类型、ACL使能信息,如下所示。我们先看下应用权限相关的几个概念。

ohos.permission.WRITE_CONTACTS
允许应用添加、移除或更改联系人数据。

权限级别:system_basic

授权方式:user_grant

ACL使能:TRUE
  • 应用APL等级

元能力权限等级APL(Ability Privilege Level)指的是应用的权限申请优先级的定义,不同APL等级的应用能够申请的权限等级不同。
应用的等级可以分为三个等级,如下表。默认情况下,应用的APL等级都为normal等级。权限列表中的权限级别指的就是APL等级,应用

APL级别 说明
system_core 该等级的应用服务提供操作系统核心能力。
system_basic 该等级的应用服务提供系统基础服务。
normal 普通应用。
  • 权限类型

根据授权方式的不同,权限类型可分为system_grant(系统授权)和user_grant(用户授权)。对应权限列表中的授权方式。

  • 访问控制列表(ACL)

每个应用权限中的权限级别和应用的APL等级是一一对应的。原则上,拥有低APL等级的应用默认无法申请更高等级的权限。
访问控制列表ACL(Access Control List)提供了解决低等级应用访问高等级权限问题的特殊渠道。

橘子购物示例应用首次启动申请权限的示例图:

在这里插入图片描述

配置文件

了解了权限相关的概念,我们看下权限相关的配置文件。

module.json5配置文件

应用需要在项目的module.json5配置文件中逐个声明所需的权限,否则应用将无法获取授权。不管是什么授权方式,system_grant(系统授权)还是user_grant(用户授权)都需要在配置文件中声明。

在配置文件的requestPermissions属性数组中配置所需的权限,包含3个属性:name、reason和usedScene。

其中:

  • name 指定权限名称,是必填项。
  • reason 描述申请权限的原因,可选项。
  • usedScene 描述权限使用的场景和时机,可选项。
    • abilities:标识需要使用到该权限的Ability,标签为数组形式。可选项。
    • when:标识权限使用的时机,值为inuse/always。inuse:表示为仅允许前台使用;always:表示前后台都可使用。

应用默认的权限等级为normal。如果应用需要申请高于默认等级的权限,除了在配置文件中进行声明之外,还需要通过ACL方式进行声明使用。下文会介绍。

module.json5配置文件片段如下:

{
  "module" : {
    ...
    "requestPermissions":[
      {
        "name" : "ohos.permission.PERMISSION1",
        "reason": "$string:reason",
        "usedScene": {
          "abilities": [
            "FormAbility"
          ],
          "when":"inuse"
        }
      },
      ...
    ]
  }
}

HarmonyAppProvision配置文件

应用默认权限等级normal,当应用需要申请system_basic和system_core等级的权限时,也就是说,如果需要申请的权限等级高于应用默认的等级,需要使用ACL方式声明使用。

例如,如果应用需要访问用户公共目录中的音乐文件,需要申请ohos.permission.WRITE_AUDIO权限,该权限属于system_basic等级。如果应用需要截取屏幕图像,则需要申请ohos.permission.CAPTURE_SCREEN权限,该权限属于system_core等级。此时,需要将相关权限项配置到HarmonyAppProvision配置文件的ACL字段中。

HarmonyAppProvision配置文件用于配置应用的权限、签名信息等,该文件位置在:`OpenHarmony SDK目录>Too

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值