首页 > 其他分享 >高质量 HarmonyOS 权限管控流程

高质量 HarmonyOS 权限管控流程

时间:2024-12-30 12:19:57浏览次数:5  
标签:管控 permission READ 高质量 HarmonyOS APL ohos 权限 等级

高质量 HarmonyOS 权限管控流程

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

权限管控了什么

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

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

权限组和子权限

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

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

image-20240608002954074

权限组和子权限一览

链接

位置信息;
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中也有明确标识的。如: 链接

image-20240608004247416

授权方式

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

  1. system_grant(系统授权)

    • 应用被允许访问的数据不会涉及到用户或设备的敏感信息
    • 需要在安装包中申请 system_grant 权限,那么系统会在用户安装应用时,自动把相应权限授予给应用
  2. user_grant(用户授权)

    • 会弹出窗口询问用户的意见-应用被允许访问的数据将会涉及到用户或设备的敏感信息

    • 需要注意的是,如果用户增加拒绝过授权,那么只能通过引导用户到系统设置页面来手动打开权限

    image-20240608004726930

申请应用权限流程

一图胜万言

总流程图

image-20240608004827845


normal 等级的应用申请权限

image-20240608005114527

system_basic 等级的应用申请权限

image-20240608005144778

申请应用权限操作步骤

1.声明权限-必须

  1. main/module.json5 中 配置 requestPermissions 字段声明权限

  2. 配置内容

    image-20240608005334602

2.声明 ACL 权限-非必须

参考链接

image-20240608005438191

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));
  });

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

image-20240608002954074

4.访问接口-必须

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

5. 当用户拒绝时,二次申请权限

针对以上弹窗,如果用户点击了禁止,我们可以再次弹窗询问用户,如 “不授予权则无法继续使用功能”,“禁止”,“允许”。

此时,如果用户点击了允许

  1. 使用 requestPermissionOnSetting 在应用内直接弹窗 请求授权

  2. 使用 startAbility 跳转到系统权限设置页面,重新授权权限`

    let want: Want = {
      bundleName: "com.huawei.hmos.settings",
      abilityName: "com.huawei.hmos.settings.MainAbility",
      uri: "application_info_entry",
    };
    const ctx = getContext(this) as common.UIAbilityContext;
    ctx.startAbility(want);
    

附上述流程思维导图

image-20240608010002233


image-20240608010016337

标签:管控,permission,READ,高质量,HarmonyOS,APL,ohos,权限,等级
From: https://www.cnblogs.com/aspXiaoBai/p/18640760

相关文章

  • HarmonyOS 5.0 Next实战应用开发—‘我的家乡’【HarmonyOS Next华为公司完全自研的操
    HarmonyOS5.0NextHarmonyOSNEXT是鸿蒙抛弃Linux内核及安卓开放源代码项目(AOSP)等代码的首个大版本,该系统仅支持鸿蒙内核和鸿蒙系统的应用,不再兼容安卓应用。引入了“和谐美学”设计理念,通过先进的物理渲染引擎,细腻地还原了真实世界的光影色彩与时空力感,为用户呈现更加沉浸、多......
  • 基于HarmonyOS 5.0(NEXT)与SpringCloud架构的跨平台应用开发与服务集成研究【实战】
    HarmonyOSNEXT百川奔腾入海,千帆共进有为,鸿蒙与你共未来!鸿蒙生态千帆起HarmonyOSNEXT!全新HarmonyOSNEXT开发者预览版将在今年第一季度面向所有开发者开放。华为宣布将于2024年1月18日举行“鸿蒙生态千帆启航仪式”,揭秘鸿蒙生态和HarmonyOSNEXT进阶新篇章。2023年......
  • #端云一体化开发# #HarmonyOS Next#《说书人》鸿蒙原生基于角色的对话式文本编辑开发
    1、写在前面过去的一百年里,在“编程”的这个行业诞生之初,人们采用面向过程的方式进行开发,但是,伴随着程序规模的日益增大,程序的复杂度也随之增加,使用结构化编程方法来管理复杂的程序逻辑变得越来越困难。因此,开发者们引入了“面向对象”的概念,采用将数据和操作封装在“对象”中......
  • 应急管理指挥中心大数据信息化管控平台建设方案
    引言应急管理指挥中心大数据信息化管控平台的建设,旨在提升应急管理的效率和精准度,通过大数据、物联网等先进技术的融合应用,实现应急资源的快速调配和决策的科学支持。建设背景随着城市化进程的加速,各类突发事件频发,对应急管理的要求日益提高。传统的人工管理模式已难以......
  • 如何使用 TypeScript 和 Jest 编写高质量单元测试
    前言在前端开发中,TypeScript和Jest是两款不可或缺的工具。TypeScript提供了强大的静态类型检查和现代JavaScript特性,显著提高了代码的可靠性和可维护性。而Jest作为一个功能丰富的测试框架,能够方便地编写和运行各种测试,从单元测试到集成测试。本文将详细介绍如何......
  • 171页PPT详解制造业采购供应链及财务管控业务流程蓝图规划
        本文详细阐述了甲方集团数字化转型采购供应链业务规划的核心内容。首先,通过全面的用户体验调研,识别业务能力提升的机会,为后续计划奠定基础。在采购物控的业务管理方面,提出了“低成本、高齐套”的材料供应愿景,旨在降本增效,提高库存周转,减少库存呆滞,提升生产供应及......
  • 数据库技术解读之细粒度资源管控
    ​背景对数据库集群内资源管控与资源隔离一直是企业客户长久以来的诉求。华为云GaussDB作为一款企业级分布式数据库,一直致力于满足企业对大型数据库集群的管理需要。数据库可以管理的资源有计算资源与存储资源,计算资源包括CPU、内存、IO与网络,存储资源包括数据存储空间、日志存......
  • 基于数字孪生技术的文旅可视化综合管控平台
    在数字化转型的大潮中,数字孪生技术以其独特的优势,正在重塑文旅行业的未来。本文将探讨基于数字孪生技术的文旅可视化综合管控平台的建设内容,旨在为行业同仁提供参考和启发。1.数字孪生技术与文旅行业的结合数字孪生技术通过创建物理环境的精确数字副本,使得旅游......
  • HarmonyOS NEXT开发实战:打造高效上拉刷新与下拉加载组件(一)空页面的设计与实现
    本文正在参加华为鸿蒙有奖征文征文活动前言:在鸿蒙开发的世界中,用户体验至关重要。我在网络上搜寻了一番,发现现有的上拉刷新和下拉加载组件要么功能不全,要么不够优雅。因此,我决定自己动手,打造一套既美观又实用的组件。本系列文章将深入解析如何使用鸿蒙系统组件封装出优秀的上拉......
  • HarmonyOS NEXT开发实战:实现高效下拉刷新与上拉加载组件(二)刷新核心逻辑与空页面集成
    前言:在上一篇文章中,我们深入探讨了如何在HarmonyOS中实现一个功能完备的空页面组件。现在,我们将进入下拉刷新和上拉加载功能的核心逻辑实现。这不仅仅是技术实现,更是对用户体验的深刻理解。本文将详细介绍如何将空页面与下拉刷新、上拉加载逻辑相结合,打造一个既高效又用户友好的......