申请应用权限

HarmonyOS 5.0.3(15) 版本的配套文档,该版本API能力级别为API 15 Release

在这里插入图片描述
在这里插入图片描述


一、选择申请权限的方式

应用在访问数据或者执行操作时,需要评估该行为是否需要应用具备相关的权限。如果确认需要目标权限,则需要在应用安装包中申请目标权限。

每一个权限的权限等级、授权方式不同,申请权限的方式也不同,开发者在申请权限前,需要先根据以下流程判断应用能否申请目标权限。

在这里插入图片描述

上图的数字标注,请参考以下说明:

  • 标注1:应用APL等级与权限等级的匹配关系请参考APL等级说明。

  • 标注2:权限的授权方式分为user_grant(用户授权)和system_grant(系统授权),具体请参考授权方式说明。
    1. 如果目标权限是system_grant类型,开发者在进行权限申请后,系统会在安装应用时自动为其进行权限预授予,开发者不需要做其他操作即可使用权限。
    2. 在应用需要获取user_grant权限时,请完成以下步骤:
    I. 在配置文件中,声明应用需要请求的权限。
    II. 将应用中需要申请权限的目标对象与对应目标权限进行关联,让用户明确地知道,哪些操作需要用户向应用授予指定的权限。
    III. 运行应用时,在用户触发访问操作目标对象时应该调用接口,精准触发动态授权弹框。该接口的内部会检查当前用户是否已经授权应用所需的权限,如果当前用户尚未授予应用所需的权限,该接口会拉起动态授权弹框,向用户请求授权。
    V. 检查用户的授权结果,确认用户已授权才可以进行下一步操作。

  • 标注3:应用可以通过ACL(访问控制列表)方式申请高级别的权限,具体请参考申请使用受限权限。

应用可根据目标权限的开放范围、授权方式,参考以下操作路径申请对应权限。

应用申请权限的方式

权限类型 授权方式 操作路径
开放权限(系统授权) system_grant 声明权限 > 访问接口
开放权限(用户授权) user_grant 声明权限 > 向用户申请授权 > 访问接口
受限开放权限 system_grant 申请使用受限权限 > 声明权限 > 访问接口
受限开放权限 user_grant 申请使用受限权限 > 声明权限 > 向用户申请授权 > 访问接口

二、声明权限

应用在申请权限时,需要在项目的配置文件中,逐个声明需要的权限,否则应用将无法获取授权。

1. 在配置文件中声明权限

应用需要在module.json5配置文件的requestPermissions标签中声明权限。

属性 含义 数据类型 取值范围
name 需要使用的权限名称。 字符串 必填,需为系统已定义的权限,取值范围请参考应用权限列表。
reason 申请权限的原因。 字符串 可选填写,该字段用于应用上架校验,当申请的权限为user_grant权限时必填,并且需要进行多语种适配。使用string类资源引用。格式为$string: ***。可参考权限使用理由的文案内容规范。
usedScene 权限使用的场景,该字段用于应用上架校验。包括abilities和when两个子项。- abilities:使用权限的UIAbility或者ExtensionAbility组件的名称。- when:调用时机。 对象 usedScene必填。- abilities:可选填写,可以配置为多个UIAbility或者ExtensionAbility名称的字符串数组。- when:可选填写,但如果配置此字段,只能填入固定值inuse(使用时)、always(始终),不能为空。当申请的权限为user_grant权限时建议填写。

说明
已在子模块中申请的权限,无需在主项目重复添加,权限将在整个应用生效。

2. 声明样例

说明 以下"ohos.permission.PERMISSION1"、"ohos.permission.PERMISSION2"仅为样例示意,不存在该权限。请开发者根据实际需要,参照上表要求填写对应属性。

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

3. 权限使用理由的文案内容规范

当申请的权限为user_grant权限时,字段reason(申请权限的原因)必填。开发者需要在应用配置文件中,配置每一个需要使用的权限。

但在实际向用户弹窗申请授权时,user_grant权限将会以权限组的形式向用户申请。当前支持的权限组请查看应用权限组列表。

reason字段的内容写作规范及建议

  1. 字串应为直白、具体、易理解的完整短句, 用于向用户说明应用使用敏感权限的理由。句子避免使用被动语态,并以句号结尾。
    建议句式:用于做某事。
    样例:以申请相机权限的reason字符串为例。
    正例:用于视频通话。
    反例:使用相机。

  2. 用途描述的字串建议小于72个字符(即36个中文字符,UI界面显示大约为两行)。不能超过256个字符,以保证多语言适配的体验。

  3. 字串不能为空白字符串,即不能不填,也不能只填空格符。

  4. 如果应用申请的权限用于多个场景,需要确保字串的完整性,让用户了解应用使用此权限的所有场景;多个HAP包内如果申请同一个权限,各个权限Reason字段需要保持场景的完整性和一致性。
    样例:
    应用中有2个HAP包,均需申请使用相机权限,其中HAP1提供功能场景为视频通话、HAP2提供功能场景为视频直播。
    正例:HAP1和HAP2中,相机权限的使用理由都填写为“用于视频通话、视频直播功能。”
    反例1:HAP1和HAP2中,相机权限的使用理由字段未保持完全一致。如HAP1中填写为“用于视频通话功能。”,HAP2中填写为“用于视频直播功能。”
    反例2:HAP1和HAP2中,相机权限的使用理由字段保持完全一致,但是描述不全面,如HAP1和HAP2中,相机权限的使用理由都填写为“用于视频通话功能。”。

权限使用理由展示方式

权限使用理由有两个展示途径:授权弹窗界面和“设置(Settings)”界面。“设置”的具体路径:设置-隐私-权限管理-某应用某

内容概要:本文详细介绍了Linux内核移植在嵌入式开发中的重要性及其具体实施步骤。首先,强调了Linux内核移植作为连接硬件与软件桥梁的重要性,特别是在智能穿戴设备、工业自动化控制系统等广泛应用中的角色。文章随后解析了Linux内核移植的主要步骤,包括准备阶段(选择合适的内核版本、获取源码、配置交叉编译环境)、内核源码修改(硬件平台支持、时钟调整、机器码适配)、内核配置(通过make config、make menuconfig或make xconfig进行配置)、内核编译与安装。此外,还探讨了常见的移植问题及其解决方案,如串口打印异常、文件系统挂载故障和驱动适配难题。最后,通过一个具体的ARM架构开发板移植案例,展示了整个移植流程的实际操作,并展望了Linux内核移植技术的发展趋势。 适合人群:具备一定嵌入式开发基础,特别是对Linux内核有一定了解的研发人员和技术爱好者。 使用场景及目标:①帮助开发者理解Linux内核移植的基本概念和流程;②指导开发者在实际项目中进行Linux内核移植,解决常见问题;③为从事嵌入式系统开发的人员提供理论支持和技术参考。 其他说明:Linux内核移植是一项复杂但极具价值的任务,不仅需要扎实的理论知识,还需要丰富的实践经验。随着技术的进步,Linux内核移植技术也在不断发展,未来的方向将更加注重自动化和智能化,以提高移植效率和成功率。建议读者在学习过程中结合实际案例进行练习,逐步积累经验,掌握这一关键技术。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

RZer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值