高质量 HarmonyOS 应用权限管控流程

简介: 高质量 HarmonyOS 应用权限管控流程

高质量 HarmonyOS 应用权限管控流程

HarmonyOS 应用开发过程中,往往会涉及到敏感数据硬件资源的调动和访问,而这部分的调用就会涉及到管控这部分的知识和内容了。我们需要对它有所了解,才可以在应用开发中提高效率和避免踩坑。

权限管控了什么

权限管控,主要是管控 数据功能

  • 数据包括个人数据(如照片、通讯录、日历、位置等)、设备数据(如设备标识、相机、麦克风等)。
  • 功能包括设备功能(如访问摄像头/麦克风、打电话、联网等)、应用功能(如弹出悬浮窗、创建快捷方式等)。

权限组和子权限

我们先看什么是子权限。比如对于媒体相册的功能操作来说。读取相册内容是一种权限、写入内容到相册是一种权限。 那么它们属于媒体相册这个大权限中的子权限。那么我们的应用在申请媒体相册的读写权限时,考虑到用户的体验。其实是会把两个权限合并为一个弹出窗口,询问用户授予权限。如果用户允许了,那么就等于获得了媒体相册的读写权限了。总结就是

  • 读取媒体相册是子权限、写入媒体相册是子权限
  • 它们合起来就是一个权限组。

MX(O}9J0W%M3`5_2CK{SARM.png

权限组和子权限一览

链接

位置信息
ohos.permission.LOCATION_IN_BACKGROUND
ohos.permission.LOCATION
ohos.permission.APPROXIMATELY_LOCATION
相机
ohos.permission.CAMERA
麦克风
ohos.permission.MICROPHONE
通讯录
ohos.permission.READ_CONTACTS
ohos.permission.WRITE_CONTACTS
日历
ohos.permission.READ_CALENDAR
ohos.permission.WRITE_CALENDAR
ohos.permission.READ_WHOLE_CALENDAR
ohos.permission.WRITE_WHOLE_CALENDAR
健身运动
ohos.permission.ACTIVITY_MOTION
身体传感器
ohos.permission.READ_HEALTH_DATA
图片和视频
ohos.permission.WRITE_IMAGEVIDEO
ohos.permission.READ_IMAGEVIDEO
ohos.permission.MEDIA_LOCATION
音乐和音频
ohos.permission.WRITE_AUDIO
ohos.permission.READ_AUDIO
文件
ohos.permission.READ_DOCUMENT
ohos.permission.WRITE_DOCUMENT
ohos.permission.READ_MEDIA
ohos.permission.WRITE_MEDIA
广告跟踪
ohos.permission.APP_TRACKING_CONSENT
读取已安装应用列表
ohos.permission.GET_INSTALLED_BUNDLE_LIST
多设备协同
ohos.permission.DISTRIBUTED_DATASYNC
蓝牙
ohos.permission.ACCESS_BLUETOOTH
电话
ohos.permission.ANSWER_CALL
ohos.permission.MANAGE_VOICEMAIL
通话记录
ohos.permission.READ_CALL_LOG
ohos.permission.WRITE_CALL_LOG
信息
ohos.permission.READ_CELL_MESSAGES
ohos.permission.READ_MESSAGES
ohos.permission.RECEIVE_MMS
ohos.permission.RECEIVE_SMS
ohos.permission.RECEIVE_WAP_MESSAGES
ohos.permission.SEND_MESSAGES
剪切板
ohos.permission.READ_PASTEBOARD
文件夹
ohos.permission.READ_WRITE_DOWNLOAD_DIRECTORY
ohos.permission.READ_WRITE_DESKTOP_DIRECTORY
ohos.permission.READ_WRITE_DOCUMENTS_DIRECTORY

APL等级

APL(Ability Privilege Level,元能力权限等级)等级,分为两类。一类是应用APL等级、另一类是权限APL等级。说人话就是 不管官阶的士官和其对应的权限之间的关系。

应用APL等级

应用APL等级分为三级:

APL级别 说明
normal 默认情况下,应用的APL等级都为normal等级。
system_basic 该等级的应用服务提供系统基础服务。
system_core 该等级的应用服务提供操作系统核心能力。 应用APL等级不允许配置为system_core。

权限APL等级

权限APL等级也分为三级:

APL级别 说明 开放范围
normal 允许应用访问超出默认规则外的普通系统资源,如配置Wi-Fi信息、调用相机拍摄等。 这些系统资源的开放(包括数据和功能)对用户隐私以及其他应用带来的风险低。 APL等级为normal及以上的应用。
system_basic 允许应用访问操作系统基础服务(系统提供或者预置的基础功能)相关的资源,如系统设置、身份认证等。 这些系统资源的开放对用户隐私以及其他应用带来的风险较高。 APL等级为system_basic及以上的应用。
system_core 涉及开放操作系统核心资源的访问操作。这部分系统资源是系统最核心的底层服务,如果遭受破坏,操作系统将无法正常运行。 - APL等级为system_core的应用。 - 仅对系统应用开放。

访问控制列表(ACL)

权限等级和应用APL等级是一一对应的。原则上,拥有低APL等级的应用默认无法申请更高等级的权限。访问控制列表ACL(Access Control List)提供了解决低等级应用访问高等级权限问题的特殊渠道。我们可以将ACL理解为让普通的老百姓也具有某种士官的能力,如调兵遣将

需要注意的是,并不是所有的权限都能通过申请ACL来实现跨等级的应用来获得。具体哪些权限可以被跨等级申请使用。HarmonyOS中也有明确标识的。如: 链接

GBGKR6%]S)BGJ3%J`{@F9UM.png

授权方式

不管是什么的方式申请权限,最后在用户的体验上一共分为两种。 system_grant(系统授权) 和 user_grant(用户授权)

  1. system_grant(系统授权)
  • 应用被允许访问的数据不会涉及到用户或设备的敏感信息
  • 需要在安装包中申请system_grant权限,那么系统会在用户安装应用时,自动把相应权限授予给应用
  1. user_grant(用户授权)
  • 会弹出窗口询问用户的意见-应用被允许访问的数据将会涉及到用户或设备的敏感信息
  • 需要注意的是,如果用户增加拒绝过授权,那么只能通过引导用户到系统设置页面来手动打开权限
  1. B~OF0}M))$53$XG3PG2NA3Q.png

申请应用权限流程

一图胜万言

总流程图

A4_}~Q~]E]BSMGOTEG~0MD6.png


normal等级的应用申请权限

FP5IPLDXQBMK5%DN5CA8BSW.png

system_basic等级的应用申请权限

P(IR4I[JX201[$[SI5MG21R.png

申请应用权限操作步骤

1.声明权限-必须

  1. main/module.json5 中 配置 requestPermissions 字段声明权限
  2. 配置内容
    QO2W%~ZE9WI%NX4AK40KI%N.png

2.声明ACL权限-非必须

参考链接

9J}TO{SVWQL{XO%5`FX1DN5.png

3.向用户申请授权-非必须

如果你申请的权限类型是 system_grant(系统授权),那么可以跳过这个步骤。如果你申请的权限类型是 user_grant(用户授权),那么需要主动申请权限,此时用户会弹出对话框。如

import abilityAccessCtrl, { Context, PermissionRequestResult } from '@ohos.abilityAccessCtrl';
import { BusinessError } from '@ohos.base';
import common from '@ohos.app.ability.common';
let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();
let context: Context = getContext(this) as common.UIAbilityContext;
// 申请摄像头权限
atManager.requestPermissionsFromUser(context, ['ohos.permission.CAMERA']).then((data: PermissionRequestResult) => {
  console.info('data:' + JSON.stringify(data));
  console.info('data permissions:' + data.permissions);
  console.info('data authResults:' + data.authResults);
}).catch((err: BusinessError) => {
  console.info('data:' + JSON.stringify(err));
});


此图只做演示,不和上述代码具体效果一一对应

J1HK@X}L@K0~E[Y]IND@(8A.png

4.访问接口-必须

此时,就可以直接调用相关接口,实现业务功能

附上述流程思维导图

P]W]Y~0(_SEGV]FT}{M[P52.png


0ACC2SO@N~B5LTX@C4F5FLJ.png

目录
相关文章
|
10天前
「Mac畅玩鸿蒙与硬件41」UI互动应用篇18 - 多滑块联动控制器
本篇将带你实现一个多滑块联动的控制器应用。用户可以通过拖动多个滑块,动态控制不同参数(如红绿蓝三色值),并实时显示最终结果。我们将以动态颜色调节为例,展示如何结合状态管理和交互逻辑,打造一个高级的滑块控制器应用。
145 78
「Mac畅玩鸿蒙与硬件41」UI互动应用篇18 - 多滑块联动控制器
|
11天前
|
UED
「Mac畅玩鸿蒙与硬件40」UI互动应用篇17 - 照片墙布局
本篇将带你实现一个简单的照片墙布局应用,通过展示多张图片组成照片墙效果,用户可以点击图片查看其状态变化。
118 67
「Mac畅玩鸿蒙与硬件40」UI互动应用篇17 - 照片墙布局
|
1天前
|
存储 索引
「Mac畅玩鸿蒙与硬件44」UI互动应用篇21 - 随机励志语录生成器
本篇将带你实现一个随机励志语录生成器应用。用户点击按钮后,界面会随机显示一条预设的励志语录。该应用展示了如何结合数组操作、状态管理和动态更新界面内容的功能,是一个轻量级的互动应用示例。
53 21
「Mac畅玩鸿蒙与硬件44」UI互动应用篇21 - 随机励志语录生成器
|
17天前
|
存储 UED
「Mac畅玩鸿蒙与硬件37」UI互动应用篇14 - 随机颜色变化器
本篇将带你实现一个随机颜色变化器应用。用户点击“随机颜色”按钮后,界面背景会随机变化为淡色系颜色,同时显示当前的颜色代码,页面还会展示一只猫咪图片作为装饰,提升趣味性。
74 36
「Mac畅玩鸿蒙与硬件37」UI互动应用篇14 - 随机颜色变化器
|
14天前
「Mac畅玩鸿蒙与硬件38」UI互动应用篇15 - 猜数字增强版
本篇将带你实现一个升级版的数字猜谜游戏。相比基础版,新增了计分和历史记录功能,用户可以在每次猜测后查看自己的得分和猜测历史。此功能展示了状态管理的进阶用法以及如何保存和显示历史数据。
70 31
「Mac畅玩鸿蒙与硬件38」UI互动应用篇15 - 猜数字增强版
|
8天前
「Mac畅玩鸿蒙与硬件43」UI互动应用篇20 - 闪烁按钮效果
本篇将带你实现一个带有闪烁动画的按钮交互效果。通过动态改变按钮颜色,用户可以在视觉上感受到按钮的闪烁效果,提升界面互动体验。
60 19
「Mac畅玩鸿蒙与硬件43」UI互动应用篇20 - 闪烁按钮效果
|
9天前
「Mac畅玩鸿蒙与硬件42」UI互动应用篇19 - 数字键盘应用
本篇将带你实现一个数字键盘应用,支持用户通过点击数字键输入数字并实时更新显示内容。我们将展示如何使用按钮组件和状态管理来实现一个简洁且实用的数字键盘。
52 17
「Mac畅玩鸿蒙与硬件42」UI互动应用篇19 - 数字键盘应用
|
17天前
|
UED 开发者
「Mac畅玩鸿蒙与硬件36」UI互动应用篇13 - 数字滚动抽奖器
本篇将带你实现一个简单的数字滚动抽奖器。用户点击按钮后,屏幕上的数字会以滚动动画的形式随机变动,最终显示一个抽奖数字。这个项目展示了如何结合定时器、状态管理和动画实现一个有趣的互动应用。
70 23
「Mac畅玩鸿蒙与硬件36」UI互动应用篇13 - 数字滚动抽奖器
|
1天前
|
数据处理
「Mac畅玩鸿蒙与硬件45」UI互动应用篇22 - 评分统计工具
本篇将带你实现一个评分统计工具,用户可以对多个选项进行评分。应用会实时更新每个选项的评分结果,并统计平均分。这一功能适合用于问卷调查或评分统计的场景。
100 65
「Mac畅玩鸿蒙与硬件45」UI互动应用篇22 - 评分统计工具
|
13天前
|
前端开发 UED
「Mac畅玩鸿蒙与硬件39」UI互动应用篇16 - 倒计时环形进度条
本篇将带你实现一个倒计时环形进度条应用。用户可以设置倒计时的时间,启动倒计时后,应用会动态显示一个随着时间递减的环形进度条,同时伴有数字倒计时显示。这是结合动画效果和时间管理的实用示例。
97 10
「Mac畅玩鸿蒙与硬件39」UI互动应用篇16 - 倒计时环形进度条