鸿蒙开发:权限管理之权限声明

简介: 本文,主要简单概述了为什么要有权限管理,以及权限管理的声明原则,这些都是基本的概念内容,大家做为了解即可,重要的是怎么声明权限,在什么位置声明权限,这一点需要掌握。

前言


本文基于Api13。


为什么要有权限管理?最大原因是提高用户对隐私和数据安全的控制权,防止恶意软件滥用权限,试想一下,如果没有权限管理,肯定会有一些恶意软件利用这些默认授权权限,获取用户的敏感信息,对用户隐私构成威胁‌,这是其一,其二就是用户的体验,因为用户无法根据自己的需求授权权限,可能导致不必要的权限被授予,于公于私,于情于理,权限管理都是必须且坚决要执行的。


鸿蒙生态中,可以说,权限管理从始至终都是一贯执行的,毕竟保障用户隐私、系统安全及功能完整性是鸿蒙的核心机制;用户隐私保护,比如访问摄像头、麦克风、位置等敏感数据时,需用户授权,防止恶意应用窃取隐私;系统资源安全,主要从限制应用对系统底层资源如网络、存储的无序访问,避免资源滥用或冲突;而功能完整性,比如部分功能,如网络请求、设备传感器调用等依赖权限授权,未申请权限将导致功能失效;这些权限请求通常是透明的,系统会弹出授权提示,用户可以根据自己的需求和隐私考量来做出选择‌。


基本原则


权限管理固然重要,但是在实际的开发中,仍然要合理且正确的的进行使用,避免不必要的申请,官网针对权限管理,有着以下几个原则:


1、开发的应用,当然这里包含应用引用的三方库,所需权限必须在应用的配置文件中严格按照权限开发指导逐个声明,这个原则非常重要,否则无法申请权限。


2、所申请的权限,尽量满足最小化的原则,严格禁止申请一些非必要的、已废弃的权限;在实际的开发中,如果一个应用,申请了很多的权限,这种情况会使得用户对应用安全性的担忧以及使用体验变差,从而也会影响到应用的安装率和留存率。


3、如果应用,一定要使用请敏感权限时,权限使用理由字段必须填写,敏感权限通常是指与用户隐私密切相关的权限,包括地理位置、相机、麦克风、日历、健身运动、身体传感器、音乐、文件、图片视频等权限;应用敏感权限须在对应业务功能执行前动态申请,满足隐私最小化要求。


4、当用户拒绝授予某个权限后,应用与此权限无关的其他业务功能应允许正常使用,不要直接退出或者产生其它的错误。


声明权限


在实际的开发中,所有的申请权限,必须在项目的配置文件中,逐个声明,这个非常重要,如果没有声明,则功能无法进行使用,声明位置,主要在module.json5配置文件的requestPermissions标签中声明权限。





{
  "module": {
    "requestPermissions": [
      {
        "name": "ohos.permission.INTERNET",
        "reason": "用于加载网络图片"
      },
      {
        "name": "ohos.permission.CAMERA",
        "reason": "拍摄照片功能所需"
      }
    ]
  }
}


reason字段请定义在string.json文件中。


requestPermissions属性概述:


属性

含义

数据类型

取值范围

name

需要使用的权限名称。

字符串

必填,权限名字,都是系统已定义的。

reason

申请权限的原因。

字符串

可选填写,该字段用于应用上架校验,当申请的权限为user_grant权限时必填,并且需要进行多语种适配。

usedScene

权限使用的场景,该字段用于应用上架校验。包括abilities和when两个子项。

- abilities:使用权限的UIAbility或者ExtensionAbility组件的名称。

- when:调用时机。

对象

usedScene必填

- abilities:可选填写,可以配置为多个UIAbility或者ExtensionAbility名称的字符串数组。

- when:可选填写,但如果配置此字段,只能填入固定值inuse(使用时)、always(始终),不能为空。

当申请的权限为user_grant权限时建议填写。


reason字段


按照官方解读,reason字段,应为直白、具体、易理解的完整短句, 主要用于向用户说明应用使用敏感权限的理由,句子要求避免使用被动语态,并以句号结尾。


建议句式:用于做某事。
样例:以申请相机权限的reason字符串为例。
正例:用于视频通话。
反例:使用相机。


相关总结


如果在某一个子模块中已经申请了权限,那么在主项目无须重复添加,因为权限将在整个应用中进行生效。


本文,主要简单概述了为什么要有权限管理,以及权限管理的声明原则,这些都是基本的概念内容,大家做为了解即可,重要的是怎么声明权限,在什么位置声明权限,这一点需要掌握。

相关文章
|
3月前
|
容器
HarmonyOS NEXT仓颉开发语言实战案例:外卖App
仓颉语言实战分享,教你如何用仓颉开发外卖App界面。内容包括页面布局、导航栏自定义、搜索框实现、列表模块构建等,附完整代码示例。轻松掌握Scroll、List等组件使用技巧,提升HarmonyOS应用开发能力。
|
2月前
|
安全 JavaScript API
鸿蒙开发核心要素
鸿蒙开发核心要素
|
3月前
|
存储 IDE 定位技术
【HarmonyOS 5】鸿蒙组件&模板服务详解 - 助力高效开发的利器
在移动应用开发领域,效率与质量始终是开发者追求的核心目标。鸿蒙系统作为新兴的操作系统,为开发者提供了丰富且强大的开发资源,其中鸿蒙组件&模板服务更是成为开发者快速构建高质量应用的得力助手。
134 0
|
12天前
|
存储 缓存 5G
鸿蒙 HarmonyOS NEXT端云一体化开发-云存储篇
本文介绍用户登录后获取昵称、头像的方法,包括通过云端API和AppStorage两种方式,并实现上传头像至云存储及更新用户信息。同时解决图片缓存问题,添加上传进度提示,支持自动登录判断,提升用户体验。
71 0
|
12天前
|
存储 负载均衡 数据库
鸿蒙 HarmonyOS NEXT端云一体化开发-云函数篇
本文介绍基于华为AGC的端云一体化开发流程,涵盖项目创建、云函数开通、应用配置及DevEco集成。重点讲解云函数的编写、部署、调用与传参,并涉及环境变量设置、负载均衡、重试机制与熔断策略等高阶特性,助力开发者高效构建稳定云端服务。
101 0
鸿蒙 HarmonyOS NEXT端云一体化开发-云函数篇
|
12天前
|
存储 JSON 数据建模
鸿蒙 HarmonyOS NEXT端云一体化开发-云数据库篇
云数据库采用存储区、对象类型、对象三级结构,支持灵活的数据建模与权限管理,可通过AGC平台或本地项目初始化,实现数据的增删改查及端侧高效调用。
41 0
|
12天前
|
存储 开发者 容器
鸿蒙 HarmonyOS NEXT星河版APP应用开发-ArkTS面向对象及组件化UI开发使用实例
本文介绍了ArkTS语言中的Class类、泛型、接口、模块化、自定义组件及状态管理等核心概念,并结合代码示例讲解了对象属性、构造方法、继承、静态成员、访问修饰符等内容,同时涵盖了路由管理、生命周期和Stage模型等应用开发关键知识点。
127 0
鸿蒙 HarmonyOS NEXT星河版APP应用开发-ArkTS面向对象及组件化UI开发使用实例
|
12天前
鸿蒙 HarmonyOS NEXT星河版APP应用开发-阶段三
本文介绍了UI开发中的样式复用与组件构建技术,涵盖@Extend、@Styles和@Builder的使用方法,并通过Swiper轮播、Scroll滚动、Tabs导航等常用组件实现典型界面效果,结合生肖抽卡、小米轮播、回顶按钮等案例,展示实际应用技巧。
56 0
|
12天前
鸿蒙 HarmonyOS NEXT星河版APP应用开发-阶段二
本文介绍鸿蒙应用界面开发中的弹性布局(Flex)、绝对定位、层叠布局及ArkTS语法进阶,涵盖字符串拼接、类型转换、数组操作、条件与循环语句,并结合B站视频卡、支付宝首页等案例,深入讲解点击事件、状态管理与界面交互功能。
62 0
鸿蒙 HarmonyOS NEXT星河版APP应用开发-阶段二
|
2月前
|
存储 SQL 前端开发
跟老卫学HarmonyOS开发:ArkTS关系型数据库开发
本节以“账本”为例,使用关系型数据库接口实现账单的增、删、改、查操作。通过创建ArkTSRdb应用,演示如何操作RdbStore进行数据管理,并结合界面按钮实现交互功能。
123 0
跟老卫学HarmonyOS开发:ArkTS关系型数据库开发