鸿蒙原生应用元服务-访问控制(权限)开发等级和类型

news2024/10/5 12:55:12

一、权限等级说明
根据接口所涉数据的敏感程度或所涉能力的安全威胁影响,ATM模块定义了不同开放范围的权限等级来保护用户隐私。

应用APL等级说明
元能力权限等级APL(Ability Privilege Level)指的是应用的权限申请优先级的定义,不同APL等级的应用能够申请的权限等级不同。

应用的等级可以分为三个等级,分别是:

鸿蒙原生应用元服务-访问控制(权限)开发等级和类型-鸿蒙开发者社区


默认情况下,应用的APL等级都为normal等级。

权限等级说明
根据权限对于不同等级应用有不同的开放范围,权限类型对应分为以下三种,等级依次提高。

normal权限

normal 权限允许应用访问超出默认规则外的普通系统资源。这些系统资源的开放(包括数据和功能)对用户隐私以及其他应用带来的风险很小。

该类型的权限仅向APL等级为normal及以上的应用开放。

system_basic权限

system_basic权限允许应用访问操作系统基础服务相关的资源。这部分系统基础服务属于系统提供或者预置的基础功能,比如系统设置、身份认证等。这些系统资源的开放对用户隐私以及其他应用带来的风险较大。

该类型的权限仅向APL等级为system_basic及以上的应用开放。

system_core权限

system_core权限涉及到开放操作系统核心资源的访问操作。这部分系统资源是系统最核心的底层服务,如果遭受破坏,操作系统将无法正常运行。

鉴于该类型权限对系统的影响程度非常大,目前暂不向任何三方应用开放。

二、权限类型说明
根据授权方式的不同,权限类型可分为system_grant(系统授权)和user_grant(用户授权)。

system_grant

system_grant指的是系统授权类型,在该类型的权限许可下,应用被允许访问的数据不会涉及到用户或设备的敏感信息,应用被允许执行的操作不会对系统或者其他应用产生大的不利影响。

如果在应用中申请了system_grant权限,那么系统会在用户安装应用时,自动把相应权限授予给应用。应用需要在应用商店的详情页面,向用户展示所申请的system_grant权限列表。

user_grant

user_grant指的是用户授权类型,在该类型的权限许可下,应用被允许访问的数据将会涉及到用户或设备的敏感信息,应用被允许执行的操作可能对系统或者其他应用产生严重的影响。

该类型权限不仅需要在安装包中申请权限,还需要在应用动态运行时,通过发送弹窗的方式请求用户授权。在用户手动允许授权后,应用才会真正获取相应权限,从而成功访问操作目标对象。

比如说,在权限定义列表中,麦克风和摄像头对应的权限都是属于用户授权权限,列表中给出了详细的权限使用理由。

应用需要在应用商店的详情页面,向用户展示所申请的user_grant权限列表。

不同权限类型的授权流程
如权限的工作流程所示,如果应用需要获取目标权限,那么需要先进行权限申请。

权限申请

开发者需要在配置文件中声明目标权限。

权限授权

如果目标权限是system_grant类型,开发者在进行权限申请后,系统会在安装应用时自动为其进行权限预授予,开发者不需要做其他操作即可使用权限。

如果目标权限是user_grant类型,开发者在进行权限申请后,在运行时触发动态弹窗,请求用户授权。

user_grant权限请求授权的步骤详解
在应用需要获取user_grant权限时,请完成以下步骤:

在配置文件中,声明应用需要请求的权限。

将应用中需要申请权限的目标对象与对应目标权限进行关联,让用户明确地知道,哪些操作需要用户向应用授予指定的权限。

运行应用时,在用户触发访问操作目标对象时应该调用接口,精准触发动态授权弹框。该接口的内部会检查当前用户是否已经授权应用所需的权限,如果当前用户尚未授予应用所需的权限,该接口会拉起动态授权弹框,向用户请求授权。

检查用户的授权结果,确认用户已授权才可以进行下一步操作。

注意事项:

每次执行需要目标权限的操作时,应用都必须检查自己是否已经具有该权限。

如需检查用户是否已向您的应用授予特定权限,可以使用checkAccessToken函数,此方法会返回 PERMISSION_GRANTED或PERMISSION_DENIED。

user_grant权限授权要基于用户可知可控的原则,需要应用在运行时主动调用系统动态申请权限的接口,系统弹框由用户授权,用户结合应用运行场景的上下文,识别出应用申请相应敏感权限的合理性,从而做出正确的选择。

即使用户向应用授予过请求的权限,应用在调用受此权限管控的接口前,也应该先检查自己有无此权限,而不能把之前授予的状态持久化,因为用户在动态授予后还可以通过设置取消应用的权限。

本文根据HarmonyOS官方文档API9整理

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1601775.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL Workbench下载安装、 MySQL Workbench使用

官方下载链接;MySQL :: Download MySQL Workbench 下载好懒人安装,也可自己选择目录 下面是使用: 连接数据库: 填写数据库连接信息: 基本操作部分: 数据导入导出: 导出/备份 导入: 生产er图…

基于springboot实现图书进销存管理系统项目【项目源码+论文说明】

基于springboot实现图书进销存管理系统演示 摘要 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了图书进销存管理系统的开发全过程。通过分析图书进销存管理系统管理的不足,创建了一个计算机管理图书进销…

第 6 章 URDF、Gazebo与Rviz综合应用(自学二刷笔记)

重要参考: 课程链接:https://www.bilibili.com/video/BV1Ci4y1L7ZZ 讲义链接:Introduction Autolabor-ROS机器人入门课程《ROS理论与实践》零基础教程 6.7.4 kinect信息仿真以及显示 通过 Gazebo 模拟kinect摄像头,并在 Rviz 中显示kinect摄像头数据…

守护脑积水宝宝,共筑健康未来

每个新生命的诞生,都承载着家庭的殷切期望与无尽的欢乐。然而,有些宝宝自诞生起便笼罩在健康的阴霾之下——脑积水。这是一种因脑脊液分泌过多或循环吸收障碍导致的疾病,其特征是颅内脑脊液量增加、脑室系统扩大或蛛网膜下腔扩大。脑脊液&…

【汇编语言实验九】

汇编语言实验九 在屏幕中间显示‘welcome to masm!’ assume cs:code,ds:datasgdatasg segmentdb welcome to masm! datasg endsstack segmentdw 0,0,0,0,0,0,0,0 stack endscode segment ;代码段start: nopmov cx,16mov si,0mov bx,0s: mov ax,datasgmov ds,axmov dh,02mov …

在wix和wordpress之间你应该选择哪一个?3件你需要知道的事

如果你最近需要制作网站,为了帮助您缩小选择范围并选择满足您独特需求的解决方案,我们比较了两个最大的名字:Wix和WordPress。 为了帮助您缩小选择范围并挑选出满足您独特需求的解决方案,我们将对两个比较受欢迎的自助建站系统——…

【Java基础学习】面向对象编程

开始时间: April 10, 2024 结束时间: April 16, 2024 阶段: Done 基础部分 类与对象的关系 类是抽象的,概念的,代表一类事物对象是具体的,实际的,代表一个具体事物(实例)类是对象的模板,对象…

在Linux操作系统中,修改文件目录权限常用的命令操作

修改文件的属主或者是属组 命令chown 用户名.用户组名,文件路径 如上图所示,使用命令 chown martin.caiwu /opt/test/1.txt 将文件1.txt的属主修改为martin 。 将文件1.txt的属组修改为caiwu 如上图所示,使用命令chown .jishu /opt/test/…

网络革新:ETU-LINK 100G AOC全系列产品驱动数字经济的加速发展

高效、稳定、高速的网络连接成为各行业发展的基石。之前的文章内容小编为大家介绍了ETU-LINK 100G DAC系列产品,本期文章我们来看看100G AOC产品,它在网络技术革新中又起着什么作用呢? 一、100G AOC全系列产品解析 100G QSFP28 AOC有源光缆 …

Android --- Activity

https://developer.android.com/guide/components/activities/intro-activities?hlzh-cn Activity 提供窗口,供应在其中多个界面。此窗口通常会填满屏幕,但也可能小于屏幕并浮动在其他窗口之上。 大多数应用包含多个屏幕,这意味着它们包含…

算法课程笔记——全排列

要最小 ventor用endl 递归方式#include <cstdio>#include <iostream>#include <algorithm>#include <string>using namespace std;const int MAXN 10;bool visit[MAXN];//判断某个元素是否被访问过char sequence[MAXN];//存放找到的全排列void GetPer…

2024年苹果审核4.3相关问题综述

苹果审核中的4.3问题是开发者关注的焦点之一&#xff0c;本文对此进行了综述&#xff0c;总结了不同情况下的处理方式和优化策略。 第一种4.3 该类问题常见于代码或UI的重复率过高&#xff0c;苹果会直接拒绝应用。开发者需注意避免此类情况的发生&#xff0c;特别是在更新应…

MongoDB 使用

1 引用依赖包 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-mongodb</artifactId></dependency>2 配置文件配置mongodb资料 # MongoDB连接信息 spring.data.mongodb.host 192.168.23.…

03-JAVA设计模式-组合模式

组合模式 什么是组合模式 组合模式&#xff08;Composite Pattern&#xff09;允许你将对象组合成树形结构以表示“部分-整体”的层次结构&#xff0c;使得客户端以统一的方式处理单个对象和对象的组合。组合模式让你可以将对象组合成树形结构&#xff0c;并且能像单独对象一…

支持向量机模型pytorch

通过5个条件判定一件事情是否会发生&#xff0c;5个条件对这件事情是否发生的影响力不同&#xff0c;计算每个条件对这件事情发生的影响力多大&#xff0c;写一个支持向量机模型pytorch程序,最后打印5个条件分别的影响力。 示例一 支持向量机&#xff08;SVM&#xff09;是一种…

企业网盘搭建——LNMP

php包链接&#xff1a;https://pan.baidu.com/s/1RElYTQx320pN6452N_7t1Q?pwdp8gs 提取码&#xff1a;p8gs 网盘源码包链接&#xff1a;https://pan.baidu.com/s/1BaYqwruka1P6h5wBBrLiBw?pwdwrzo 提取码&#xff1a;wrzo 目录 一.手动部署 二.自动部署 一.手动部署 …

Python pytest 面试题!

在Python软件开发中&#xff0c;单元测试是非常重要的一环。它可以帮助开发人员确保代码的正确性并提高代码质量。pytest是一个功能强大且易于使用的Python测试框架&#xff0c;它提供了丰富的功能和灵活的用法&#xff0c;使得编写和执行测试变得更简单和高效。 本文将介绍一…

如何把车卖出去,什么营销最靠谱!

之前我看过雷军的《小米创业思考》&#xff0c;在书中他一直在强调互联网思维&#xff0c;这是一种非常好的思考模式&#xff0c;不仅限于互联网产品&#xff0c;在这次卖车上也一样展现的淋漓尽致。 营销一样需要被设计。提到&#xff0c;不少设计师首先想到的是做运营海报&am…

pycharm连接hugging face等网站

一、设置环境变量 在代码最前面设置变量 os.environ[ALL_PROXY] http://127.0.0.1:7890 file-->setting 二、查看自己的代理ip 控制面板-网络和internet-internet选项-连接-局域网设置 1.控制面板 2. 网络和internet 3.internet选项 4.连接 5.局域网设置 6.IP

vue3大事件项目3

弹框验证 先准备变量: const formModel ref({ cate_name: , cate_alias: }) 还有规则&#xff1a; const rules { cate_name: [ { required: true, message: please input name, trigger: blur }, { pattern: /^\S{1,10}$/, message: must be 1-10, trigger: blur } ], …