鸿蒙中 应用的权限(一)
本文同步发表于我的微信公众号微信搜索程语新视界即可关注每个工作日都有文章更新一、权限管控什么是应用权限系统提供一种通用权限访问方式允许应用访问系统资源如通讯录和系统能力如摄像头、麦克风以保护系统数据包括用户个人数据和功能防止不当或恶意使用。权限保护的对象权限保护的对象可以分为两类保护类型具体内容示例数据个人数据照片、通讯录、日历、位置设备数据设备标识、相机、麦克风功能设备功能访问摄像头/麦克风、打电话、联网应用功能弹出悬浮窗、创建快捷方式二、权限使用开发应用时权限申请需要满足以下原则2.1 声明原则应用包括应用引用的第三方库所需权限必须在应用的配置文件中逐个声明。// module.json5 示例 { module: { requestPermissions: [ { name: ohos.permission.CAMERA, reason: $string:reason_camera, usedScene: { abilities: [CameraAbility], when: inuse } } ] } }2.2 最小化原则权限申请满足最小化原则禁止申请非必要的、已废弃的权限。过多权限申请会引起用户对应用安全性的担忧以及使用体验变差从而影响应用的安装率和留存率。2.3 使用理由应用申请敏感权限时必须填写权限使用理由字段。敏感权限通常是指与用户隐私密切相关的权限包括地理位置相机麦克风日历健身运动身体传感器音乐文件图片视频2.4 动态申请原则应用敏感权限须在对应业务功能执行前动态申请满足隐私最小化要求。2.5 业务连续性原则用户拒绝授予某个权限后应用与此权限无关的其他业务功能应允许正常使用。三、授权方式根据授权方式的不同权限类型可分为三种3.1 system_grant系统授权定义系统授权类型应用被允许访问的数据不会涉及用户个人信息。授权时机系统会在用户安装应用时自动授予相应的权限。特点无需用户手动确认不涉及用户隐私数据安装即授权3.2 user_grant用户授权定义用户授权类型应用被允许访问的数据将会涉及用户个人信息。授权时机需要在应用运行时通过弹窗请求用户授权。特点需要用户手动确认涉及用户隐私数据用户可随时在设置中关闭// 动态申请用户授权示例 import { abilityAccessCtrl } from kit.AbilityAccessCtrlKit; let atManager abilityAccessCtrl.createAtManager(); let permissions: Arraystring [ohos.permission.CAMERA]; atManager.requestPermissionsFromUser(this.context, permissions) .then((data) { console.info(requestPermissionsFromUser success); }) .catch((error) { console.error(requestPermissionsFromUser failed); });3.3 manual_settings手动设置授权引入版本API 21开始支持定义手动设置授权类型应用被允许访问的数据将会涉及用户个人信息应用被允许执行的操作可能对系统或者用户产生严重的影响。授权时机只能由用户在系统设置应用中授权无法通过弹窗请求。特点无法通过代码弹窗申请必须引导用户去系统设置开启权限级别较高影响较大四、权限组和子权限为了尽可能减少权限弹窗数量并优化交互体验系统将逻辑紧密相关的user_grant权限组合成多个权限组。当应用请求权限时同一个权限组的权限将会在一个弹窗内一起请求用户授权。权限组中的某个权限称之为该权限组的子权限。注意事项权限组和权限的归属关系不是固定不变的一个权限所属的权限组可能发生变化。五、权限机制5.1 TokenID定义系统采用TokenIDToken identity作为应用的唯一标识。作用权限管理服务通过应用的TokenID来管理应用的ATAccess Token信息包括身份标识APP ID子用户信息分身索引信息APL等级权限授权状态特点系统支持多用户特性和应用分身特性同一个应用在不同的子用户下和不同的分身应用会有各自的AT这些AT的TokenID也是不同的。5.2 APL等级元能力权限等级为了防止应用过度索取和滥用权限系统基于APL配置了不同的权限开放范围。应用的等级可以分为以下三个等级等级依次提高APL级别说明normal默认情况下应用的APL等级都为normal等级system_basic该等级的应用服务提供系统基础服务system_core该等级的应用服务提供操作系统核心能力。应用APL等级不允许配置为system_core权限APL等级根据权限对于不同等级应用有不同的开放范围权限类型对应分为以下三个等级APL级别说明开放范围normal允许应用访问超出默认规则外的普通系统资源如配置Wi-Fi信息、调用相机拍摄等。这些系统资源的开放对用户隐私以及其他应用带来的风险较低。APL等级为normal及以上的应用system_basic允许应用访问操作系统基础服务相关的资源如系统设置、身份认证等。这些系统资源的开放对用户隐私以及其他应用带来的风险较高。- APL等级为system_basic及以上的应用- 部分权限对normal级别的应用受限开放system_core涉及开放操作系统核心资源的访问操作。这部分系统资源是系统最核心的底层服务一旦遭受破坏操作系统将无法正常运行。- APL等级为system_core的应用- 仅对系统应用开放5.3 访问控制列表ACL原则上低APL等级的应用默认无法申请更高等级的权限。访问控制列表ACL提供了低等级应用访问高等级权限的特殊渠道。系统权限均定义了ACL使能字段。当该字段为TRUE时应用可以使用ACL方式跨级别申请权限。场景举例开发者正在开发APL等级为normal的A应用由于功能场景需要A应用需要跨级申请等级为system_basic的P权限。当P权限的ACL使能为TRUE时A应用可以通过ACL方式跨级申请权限P。六、携带数据的权限类型在传统的权限模型中权限呈现非是即否的状态每个权限所包含的内容有限在逐步精细化的权限管控模型中显得力不从心。系统引入了可以携带额外信息的权限键值对。这种新的权限类型能够在日益复杂的权限管控模型中展现出更大的灵活性和适应性。场景举例以权限ohos.permission.ACCESS_DDK_DRIVERS为例在扩展外设场景中系统需要管理当前应用能够连接的驱动服务端而这样的服务端可能有多个这就要求权限能够携带具体的服务端数据明确指出应用能够连接哪些外设驱动服务端。七、申请权限的方式在申请权限前需要确认权限名称根据API接口中的需要权限或permission字段确认权限名称检索权限类型通过权限列表页面检索确认权限类型选择操作路径根据目标权限的开放范围和授权方式选择相应的操作路径不同权限类型的申请路径权限类型授权方式操作路径开放权限系统授权system_grant声明权限 → 访问接口声明权限开放权限用户授权user_grant声明权限 → 向用户申请授权 → 访问接口受限开放权限系统授权system_grant申请使用受限权限 → 声明权限 → 访问接口受限开放权限用户授权user_grant申请使用受限权限 → 声明权限 → 向用户申请授权 → 访问接口7.3 具体操作步骤详解步骤1声明权限所有类型都需要在module.json5中声明所需权限
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2409226.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!