高质量 HarmonyOS 权限管控流程
高质量 HarmonyOS 权限管控流程
在 HarmonyOS 应用开发过程中,往往会涉及到敏感数据和硬件资源的调动和访问,而这部分的调用就会涉及到管控这部分的知识和内容了。我们需要对它有所了解,才可以在应用开发中提高效率和避免踩坑。
权限管控了什么
权限管控,主要是管控 数据和功能。
- 数据包括个人数据(如照片、通讯录、日历、位置等)、设备数据(如设备标识、相机、麦克风等)。
- 功能包括设备功能(如访问摄像头/麦克风、打电话、联网等)、应用功能(如弹出悬浮窗、创建快捷方式等)。
权限组和子权限
我们先看什么是子权限。比如对于媒体相册的功能操作来说。读取相册内容是一种权限、写入内容到相册是一种权限。 那么它们属于媒体相册这个大权限中的子权限。那么我们的应用在申请媒体相册的读写权限时,考虑到用户的体验。其实是会把两个权限合并为一个弹出窗口,询问用户授予权限。如果用户允许了,那么就等于获得了媒体相册的读写权限了。总结就是
- 读取媒体相册是子权限、写入媒体相册是子权限
- 它们合起来就是一个权限组。

权限组和子权限一览
链接
位置信息
ohos.permission.LOCATION_IN_BACKGROUNDohos.permission.LOCATIONohos.permission.APPROXIMATELY_LOCATION相机
ohos.permission.CAMERA
麦克风
ohos.permission.MICROPHONE
通讯录
ohos.permission.READ_CONTACTSohos.permission.WRITE_CONTACTS日历
ohos.permission.READ_CALENDARohos.permission.WRITE_CALENDARohos.permission.READ_WHOLE_CALENDARohos.permission.WRITE_WHOLE_CALENDAR健身运动
ohos.permission.ACTIVITY_MOTION
身体传感器
ohos.permission.READ_HEALTH_DATA
图片和视频
ohos.permission.WRITE_IMAGEVIDEOohos.permission.READ_IMAGEVIDEOohos.permission.MEDIA_LOCATION音乐和音频
ohos.permission.WRITE_AUDIOohos.permission.READ_AUDIO文件
ohos.permission.READ_DOCUMENTohos.permission.WRITE_DOCUMENTohos.permission.READ_MEDIAohos.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_CALLohos.permission.MANAGE_VOICEMAIL通话记录
ohos.permission.READ_CALL_LOGohos.permission.WRITE_CALL_LOG信息
ohos.permission.READ_CELL_MESSAGESohos.permission.READ_MESSAGESohos.permission.RECEIVE_MMSohos.permission.RECEIVE_SMSohos.permission.RECEIVE_WAP_MESSAGESohos.permission.SEND_MESSAGES剪切板
ohos.permission.READ_PASTEBOARD
文件夹
ohos.permission.READ_WRITE_DOWNLOAD_DIRECTORYohos.permission.READ_WRITE_DESKTOP_DIRECTORYohos.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中也有明确标识的。如: 链接

授权方式
不管是什么的方式申请权限,最后在用户的体验上一共分为两种。 system_grant(系统授权) 和 user_grant(用户授权)
-
system_grant(系统授权)
- 应用被允许访问的数据不会涉及到用户或设备的敏感信息
- 需要在安装包中申请system_grant权限,那么系统会在用户安装应用时,自动把相应权限授予给应用。
-
user_grant(用户授权)
-
会弹出窗口询问用户的意见-应用被允许访问的数据将会涉及到用户或设备的敏感信息
-
需要注意的是,如果用户增加拒绝过授权,那么只能通过引导用户到系统设置页面来手动打开权限

-
申请应用权限流程
一图胜万言
总流程图

normal等级的应用申请权限

system_basic等级的应用申请权限

申请应用权限操作步骤
1.声明权限-必须
-
在 main/module.json5 中 配置 requestPermissions 字段声明权限
-
配置内容

2.声明ACL权限-非必须
参考链接

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));
});
此图只做演示,不和上述代码具体效果一一对应

4.访问接口-必须
此时,就可以直接调用相关接口,实现业务功能
附上述流程思维导图


相关文章:
高质量 HarmonyOS 权限管控流程
高质量 HarmonyOS 权限管控流程 在 HarmonyOS 应用开发过程中,往往会涉及到敏感数据和硬件资源的调动和访问,而这部分的调用就会涉及到管控这部分的知识和内容了。我们需要对它有所了解,才可以在应用开发中提高效率和避免踩坑。 权限管控了…...
java里面封装https请求工具类2
其他写法 https://blog.csdn.net/weixin_44372802/article/details/132620809?spm1001.2014.3001.5501 encodeJson 是请求参数的密文格式(大公司都是要对请求参数加密的) ResponseBean 是自己或者对方定义的返回内容参数 public ResponseBean sendByEnc…...
前端面试题日常练-day59 【面试题】
题目 希望这些选择题能够帮助您进行前端面试的准备,答案在文末 1. 在PHP中,以下哪个符号用于比较两个值的相等性? a) b) c) d) ! 2. PHP中的预定义变量$_POST用于获取什么类型的数据? a) 用户的输入数据 b) 浏览器发送的请…...
计算机小问题(4)--关闭联想电脑的小组件
打开联想软件管家,关闭即可 (今天弄了好久才找到,记录一下)...
mac无法读取windows分区怎么办 苹果硬盘怎么读取
对于Mac电脑用户但有Windows系统使用需求的,我们可以通过Boot Camp启动转换助理安装Windows分区这个方案来解决,不过因为两个系统的磁盘格式不同,相应的也会产生一些问题,例如无法正常读取windows分区。下面本文就详细说明mac无法…...
【设计模式】JAVA Design Patterns——State(状态模式)
🔍目的 允许对象在内部状态改变时改变它的行为。对象看起来好像修改了它的类。 🔍解释 真实世界例子 当在长毛象的自然栖息地观察长毛象时,似乎它会根据情况来改变自己的行为。它开始可能很平静但是随着时间推移当它检测到威胁时它会对周围的…...
Docker搭建可道云
Docker搭建可道云(存储) 文章目录 Docker搭建可道云(存储)介绍资源列表基础环境一、安装Docker二、配置Docker加速器三、搭建可道云私有云盘3.1、编写Dockerfile3.2、上传资源到指定目录3.3、查看目录下所有资源 四、构建镜像五、…...
【RISC-V】站在巨人的肩膀上——看开源芯片、软件生态、与先进计算/人工智能/安全的结合
目录 会议议程前言开源处理器芯片的机遇与挑战,孙凝晖,中国工程院院士RISC-V原生基础软件栈,武延军,中国科学院软件研究所RISC-V推动新型架构创新,孟建熠,浙江大学 专题一:开源芯片开源高性能 R…...
test 判断字符串不为空
#!/bin/bash read -p "请输入参数:" name test -z $name if [ $? -eq 1 ]; then echo "入参:$name" else echo "入参为null" fi...
Python数据分析I
目录 注:简单起见,下文中"df"均写为"表名","函数"均写为"HS","属性"均写为"SX","范围"均写为"FW"。 1.数据分析常用开源库 注释…...
Qt5/6使用SqlServer用户连接操作SqlServer数据库
网上下载SQLServer2022express版数据库,这里没啥可说的,随你喜欢,也可以下载Develop版本。安装完后,我们可以直接连接尝试, 不过一般来说,还是下载SQLServer管理工具来连接数据更加方便。 所以直接下载ssms, 我在用的时候,一开始只能用Windows身份登录。 所以首先,我…...
[经验] 场效应管是如何发挥作用的 #知识分享#学习方法#职场发展
场效应管是如何发挥作用的 在现代电子技术领域,场效应管(MOSFET)是一种重要的半导体元器件。它的作用非常广泛,例如在集成电路中扮演着关键的角色。在本文中,我们将详细探讨场效应管的作用及其在实际应用中的意义。 简…...
数据挖掘--分类
数据挖掘--引论 数据挖掘--认识数据 数据挖掘--数据预处理 数据挖掘--数据仓库与联机分析处理 数据挖掘--挖掘频繁模式、关联和相关性:基本概念和方法 数据挖掘--分类 数据挖掘--聚类分析:基本概念和方法 基本概念 决策树归纳 决策树:决策树是一…...
数据结构篇其六-串
数据结构—串 前置说明 由于学习Java面向对象语言走火入魔,试图在C语言中模拟实现面向对象设计。里面加入了大量的函数指针配合结构体来模拟类中的成员方法 故此篇,亦可称: 面向对象的C语言程序设计 用C语言实现串这种数据结构,并将它应用到…...
队列和栈的实现
本节讲解的队列与栈,如果你对之前的线性和链式结构顺利掌握了,那么下边的队列和栈就小菜一碟了。因为我们会用前两节讲到的东西来实现队列和栈。 之所以放到一起讲是因为这两个东西很类似,队列是先进先出结构(FIFO, first in first out)&…...
lua vm 五: upvalue
前言 在 lua vm 中,upvalue 是一个重要的数据结构。upvalue 以一种高效的方式实现了词法作用域,使得函数能成为 lua 中的第一类值,也因其高效的设计,导致在实现上有点复杂。 函数 (proto) upvalue 构成了闭包(closu…...
React Native中集成ArcGIS以显示地图、渲染自定义图层和获取地理信息数据
在您的数据采集上传的应用中集成ArcGIS以显示地图、渲染自定义图层和获取地理信息数据是一项常见需求。下面是如何实现这些功能的详细指南,包括具体步骤和示例代码。 1. 显示地图 原生开发 Android: 使用ArcGIS Android SDK。您需要在AndroidManifest…...
java中的异常-异常处理(try、catch、finally、throw、throws)+自定义异常
一、概述 1、java程序员在编写程序时提前编写好对异常的处理程序,在程序发生异常时就可以执行预先设定好的处理程序,处理程序执行完之后,可以继续向后执行后面的程序 2、异常处理程序是在程序执行出现异常时才执行的 二、5个关键字 1、tr…...
深入了解反射
newInstance 可访问性限制: newInstance()方法只能调用无参的公共构造函数。如果类没有无参公共构造函数,那么newInstance()方法将无法使用。 异常处理: newInstance()方法在创建对象时会抛出受检异常InstantiationException和IllegalAcces…...
5、搭建前端项目
5.1 使用vite vue搭建 win r 打开终端 切换到你想要搭建的盘 npm init vitelatest跟着以下步骤取名即可 cd fullStackBlognpm installnpm run dev默认在 http://localhost:5173/ 下启动了 5.2 用vscode打开项目并安装需要的插件 1、删除多余的 HelloWorld.vue 文件 2、安装…...
Unity游戏翻译神器XUnity.AutoTranslator全攻略:从入门到精通
Unity游戏翻译神器XUnity.AutoTranslator全攻略:从入门到精通 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 问题导入:当游戏语言成为体验障碍 你是否曾遇到这样的困境ÿ…...
ROS2 MoveIt2实战:如何让虚拟机械臂‘看懂’并抓取YOLOv8 OBB识别的物体?
ROS2 MoveIt2与YOLOv8 OBB深度集成:构建高精度虚拟抓取系统的核心技术解析 当机械臂遇上计算机视觉,一场关于精准控制的交响乐就此展开。本文将带您深入探索如何利用YOLOv8 OBB(Oriented Bounding Box)的朝向感知能力,…...
符号回归的工程化实践:基于深度学习的物理定律自动发现与工业部署
1. 符号回归:当深度学习遇见物理定律发现 第一次接触符号回归时,我被它的"反套路"特性惊艳到了——大多数深度学习模型都在努力变得更复杂,而它却在追求用最简单的数学公式解释世界。三年前我在化工厂做反应釜监控项目时࿰…...
破局B站音频提取难题:BilibiliDown革新性解决方案全解析
破局B站音频提取难题:BilibiliDown革新性解决方案全解析 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_mirrors…...
5分钟玩转OpenClaw:nanobot镜像云端体验与本地调试对比
5分钟玩转OpenClaw:nanobot镜像云端体验与本地调试对比 1. 为什么需要对比云端与本地两种体验方式 作为一个长期折腾AI工具的开发者,我最近在测试OpenClaw时遇到了一个典型困境:是直接在本地电脑安装全套环境,还是先用云端沙盒快…...
pyNastran:破解工程仿真困境的Python技术革新者
pyNastran:破解工程仿真困境的Python技术革新者 【免费下载链接】pyNastran A Python-based interface tool for Nastrans file formats 项目地址: https://gitcode.com/gh_mirrors/py/pyNastran 揭示行业痛点:有限元分析的三大核心挑战 现代工程…...
维普AIGC检测降AI率全流程攻略:从70%降到10%以下实操分享
维普AIGC检测降AI率全流程攻略:从70%降到10%以下实操分享 说一个最近碰到的真事。我们实验室一个师弟,论文用维普查了AIGC检测,结果出来AI率72.4%。他当场就懵了——因为他确实有用AI辅助写了一些段落,但自认为改了挺多的…...
别再为ImageNet-1k 2012下载发愁了:手把手教你用迅雷+MD5校验搞定训练集和测试集
高效获取ImageNet-1k数据集的完整实践指南 在计算机视觉研究领域,ImageNet-1k数据集堪称是算法开发的"基石"。无论是训练经典的ResNet模型,还是验证最新的Transformer架构,这个包含1000个类别、超过120万张图像的数据集都是不可或缺…...
三菱/安川伺服电机调试笔记:零点与原点参数设置的5个易错点
三菱/安川伺服电机调试实战:零点与原点参数设置的5个致命陷阱 伺服电机调试过程中,零点与原点的参数设置就像给精密机械赋予"空间感知"能力。三菱J4系列和安川Σ-7作为工业自动化领域的标杆产品,其调试逻辑看似简单,实则…...
RKNN模型量化全解析:如何用1.5.2版本工具链提升瑞芯微3588芯片推理效率
RKNN模型量化实战指南:1.5.2版本工具链在RK3588芯片的深度优化 边缘计算时代的模型效率革命 当无人机需要在毫秒间识别障碍物,当零售摄像头要同时追踪上百个顾客行为,传统云端AI的响应速度已无法满足需求。这正是边缘AI芯片大显身手的舞台——…...
