高质量 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、安装…...

SpringBoot-17-MyBatis动态SQL标签之常用标签
文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...

【Python】 -- 趣味代码 - 小恐龙游戏
文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合
强化学习(Reinforcement Learning, RL)是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程,然后使用强化学习的Actor-Critic机制(中文译作“知行互动”机制),逐步迭代求解…...

AI Agent与Agentic AI:原理、应用、挑战与未来展望
文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例:使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例:使用OpenAI GPT-3进…...
DockerHub与私有镜像仓库在容器化中的应用与管理
哈喽,大家好,我是左手python! Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库,用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器
——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的一体化测试平台,覆盖应用全生命周期测试需求,主要提供五大核心能力: 测试类型检测目标关键指标功能体验基…...
pam_env.so模块配置解析
在PAM(Pluggable Authentication Modules)配置中, /etc/pam.d/su 文件相关配置含义如下: 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块,负责验证用户身份&am…...

【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例
文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...
在四层代理中还原真实客户端ngx_stream_realip_module
一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡(如 HAProxy、AWS NLB、阿里 SLB)发起上游连接时,将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后,ngx_stream_realip_module 从中提取原始信息…...
【论文笔记】若干矿井粉尘检测算法概述
总的来说,传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度,通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...