成品网站货源入口,建设部监理工程师报考网站,百度最怕哪个投诉电话,免费个人网站模板文章目录 一、访问控制二、应用权限1、应用权限管控2、权限使用的基本原则3、授权方式4、权限等级 三、申请应用权限1、选择申请权限的方式2、声明权限3、声明样例4、二次向用户申请授权5、具体实现示例6、效果展示 四、应用权限列表1、system_grant#xff08;系统授权#… 文章目录 一、访问控制二、应用权限1、应用权限管控2、权限使用的基本原则3、授权方式4、权限等级 三、申请应用权限1、选择申请权限的方式2、声明权限3、声明样例4、二次向用户申请授权5、具体实现示例6、效果展示 四、应用权限列表1、system_grant系统授权2、user_grant用户授权3、应用权限组列表 一、访问控制
默认情况下应用只能访问有限的系统资源。但某些情况下应用存在扩展功能的诉求需要访问额外的系统数据包括用户个人数据和功能系统也必须以明确的方式对外提供接口来共享其数据或功能。
系统通过访问控制的机制来避免数据或功能被不当或恶意使用。当前访问控制的机制涉及多方面包括应用沙箱、应用权限、系统控件等方案。
二、应用权限
系统根据应用的APL等级设置进程域和数据域标签并通过访问控制机制限制应用可访问的数据范围从而实现在机制上消减应用数据泄露的风险。
不同APL等级的应用能够申请的权限等级不同且不同的系统资源如通讯录等或系统能力如访问摄像头、麦克风等受不同的应用权限保护。通过严格的分层权限保护有效抵御恶意攻击确保系统安全可靠。
1、应用权限管控
系统提供了一种允许应用访问系统资源如通讯录等和系统能力如访问摄像头、麦克风等的通用权限访问方式来保护系统数据包括用户个人数据或功能避免它们被不当或恶意使用。
应用权限保护的对象可以分为数据和功能
数据包括个人数据如照片、通讯录、日历、位置等、设备数据如设备标识、相机、麦克风等。
功能包括设备功能如访问摄像头/麦克风、打电话、联网等、应用功能如弹出悬浮窗、创建快捷方式等。
2、权限使用的基本原则
合理的使用场景有助于应用权限申请和使用。开发应用时权限申请需要满足如下原则 应用包括应用引用的三方库所需权限必须在应用的配置文件中严格按照权限开发指导逐个声明。 权限申请满足最小化原则禁止申请非必要的、已废弃的权限。应用申请过多权限会引起用户对应用安全性的担忧以及使用体验变差从而也会影响到应用的安装率和留存率。 应用申请敏感权限时必须填写权限使用理由字段敏感权限通常是指与用户隐私密切相关的权限包括地理位置、相机、麦克风、日历、健身运动、身体传感器、音乐、文件、图片视频等权限。 应用敏感权限须在对应业务功能执行前动态申请满足隐私最小化要求。 用户拒绝授予某个权限后应用与此权限无关的其他业务功能应允许正常使用。
3、授权方式
根据授权方式的不同权限类型可分为system_grant系统授权和user_grant用户授权。
system_grant系统授权
system_grant指的是系统授权类型在该类型的权限许可下应用被允许访问的数据不会涉及到用户或设备的敏感信息应用被允许执行的操作对系统或者其他应用产生的影响可控。
如果在应用中申请了system_grant权限那么系统会在用户安装应用时自动把相应权限授予给应用。
user_grant用户授权
user_grant指的是用户授权类型在该类型的权限许可下应用被允许访问的数据将会涉及到用户或设备的敏感信息应用被允许执行的操作可能对系统或者其他应用产生严重的影响。
该类型权限不仅需要在安装包中申请权限还需要在应用动态运行时通过发送弹窗的方式请求用户授权。在用户手动允许授权后应用才会真正获取相应权限从而成功访问操作目标对象。
4、权限等级
为了防止应用过度索取和滥用权限系统基于APLAbility Privilege Level元能力权限等级等级配置了不同的权限开放范围。
元能力权限等级APL指的是应用的权限申请优先级的定义不同APL等级的应用能够申请的权限等级不同。
级别说明开放范围normal允许应用访问超出默认规则外的普通系统资源如配置Wi-Fi信息、调用相机拍摄等。这些系统资源的开放包括数据和功能对用户隐私以及其他应用带来的风险低。都能用system_basic允许应用访问操作系统基础服务系统提供或者预置的基础功能相关的资源如系统设置、身份认证等。这些系统资源的开放对用户隐私以及其他应用带来的风险较高。要签名证书system_core涉及开放操作系统核心资源的访问操作。这部分系统资源是系统最核心的底层服务如果遭受破坏操作系统将无法正常运行。不开放
三、申请应用权限
1、选择申请权限的方式
应用在访问数据或者执行操作时需要评估该行为是否需要应用具备相关的权限。如果确认需要目标权限则需要在应用安装包中申请目标权限。
每一个权限的权限等级、授权方式不同申请权限的方式也不同开发者在申请权限前需要先根据以下流程判断应用能否申请目标权限。 system_grant系统授权
如果目标权限是system_grant类型开发者在进行权限申请后系统会在安装应用时自动为其进行权限预授予开发者不需要做其他操作即可使用权限。
user_grant用户授权
在应用需要获取user_grant权限时请完成以下步骤
1、在配置文件中声明应用需要请求的权限。
2、将应用中需要申请权限的目标对象与对应目标权限进行关联让用户明确地知道哪些操作需要用户向应用授予指定的权限。
3、运行应用时在用户触发访问操作目标对象时应该调用接口精准触发动态授权弹框。该接口的内部会检查当前用户是否已经授权应用所需的权限如果当前用户尚未授予应用所需的权限该接口会拉起动态授权弹框向用户请求授权。
4、检查用户的授权结果确认用户已授权才可以进行下一步操作。
2、声明权限
应用在申请权限时需要在项目的配置文件中逐个声明需要的权限否则应用将无法获取授权。
应用需要在module.json5配置文件的requestPermissions标签中声明权限。
属性含义数据类型是否必填取值范围name需要使用的权限名称。字符串必填需为系统已定义的权限取值范围请参考应用权限列表。reason申请权限的原因。字符串选填该字段用于应用上架校验当申请的权限为user_grant权限时必填并且需要进行多语种适配。使用string类资源引用。格式为$string: ***。usedScene权限使用的场景。包括abilities和when两个子项。-abilities使用权限的UIAbility或者ExtensionAbility组件的名称。- when调用时机。对象必填当申请的权限为user_grant权限时建议填写。
3、声明样例
// module.json5
{module : {requestPermissions:[// 网络请求{name: ohos.permission.INTERNET},// 相机{name: ohos.permission.CAMERA,reason: $string:permission_reason_camera,usedScene: {}},]}
}4、二次向用户申请授权
当应用通过requestPermissionsFromUser()拉起弹框请求用户授权时用户拒绝授权。应用将无法再次通过requestPermissionsFromUser拉起弹框需要用户在系统应用“设置”的界面中手动授予权限。
在“设置”应用中的路径
路径一设置 隐私和安全 权限类型如麦克风 具体应用 路径二设置 应用和元服务 某个应用
应用也可以通过调用requestPermissionOnSetting()直接拉起权限设置弹框引导用户授予权限。
5、具体实现示例
以申请使用麦克风权限为例进行说明。
在UI中向用户申请授权。
调用requestPermissionsFromUser()方法后应用程序将等待用户授权的结果。如果用户授权则可以继续访问目标操作。如果用户拒绝授权则需要提示用户必须授权才能访问当前页面的功能并引导用户到系统应用“设置”中打开相应的权限。
应用也可以通过调用requestPermissionOnSetting()直接拉起权限设置弹框引导用户授予权限。
import { abilityAccessCtrl, common, Permissions, bundleManager } from kit.AbilityKit
import { promptAction } from kit.ArkUI;const context getContext(this) as common.UIAbilityContext;Entry
Component
struct PermissionPage {// 打开系统设置的权限管理页openPermissionSettingsPage() {const BundleFlag bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_APPLICATION// 获取 bundle 包信息const bundleInfo bundleManager.getBundleInfoForSelfSync(BundleFlag)// 通过 startAbility 打开 系统设置 页context.startAbility({bundleName: com.huawei.hmos.settings, // 固定写法CV设置页的包名abilityName: com.huawei.hmos.settings.MainAbility, // 固定写法CV设置页的 ability 名uri: application_info_entry, // 固定写法CV打开 设置-应用和元服务parameters: {// 应用包名可通过 bundleManager 动态获取pushParams: bundleInfo.name}})}// 申请麦克风授权async requestMicrophone() {const permissions: ArrayPermissions [ohos.permission.MICROPHONE];// 1. 创建应用权限管理器const atManager abilityAccessCtrl.createAtManager()// 2. 向用户申请 user_grant 权限温馨提示首次申请时会弹窗后续申请则不会再出现弹窗const requestResult await atManager.requestPermissionsFromUser(context, // 应用上下文permissions // 参数权限列表(数组)zou)const isAuth requestResult.authResults.every(item item abilityAccessCtrl.GrantStatus.PERMISSION_GRANTED)// 如果点击拒绝则弹窗引导去设置页开启if (!isAuth) {promptAction.showDialog({alignment: DialogAlignment.Center,title: 温馨提示,message: 开启后才能录制加密视频和音频,buttons: [{ text: 取消, color: #89939c },{ text: 去设置, color: #0a59f7 },]}).then((res) {// 用户点击了去设置if (res.index 1) {// 通过代码打开当前应用的设置页this.openPermissionSettingsPage()}})}}build() {Column() {Button(申请麦克风授权).onClick(() {this.requestMicrophone()})}.padding(20).height(100%).width(100%)}
}6、效果展示 如果用户拒绝授权通过调用requestPermissionOnSetting()直接拉起权限设置弹框引导用户授予权限。 四、应用权限列表
1、system_grant系统授权
更多请参见官网《对所有应用开放》
ohos.permission.USE_BLUETOOTH 允许应用查看蓝牙的配置。
ohos.permission.GET_BUNDLE_INFO 允许查询应用的基本信息。
ohos.permission.PREPARE_APP_TERMINATE 允许应用关闭前执行自定义的预关闭动作。
ohos.permission.PRINT 允许应用获取打印框架的能力。
ohos.permission.DISCOVER_BLUETOOTH 允许应用配置本地蓝牙查找远端设备且与之配对连接。
ohos.permission.ACCELEROMETER 允许应用读取加速度传感器的数据。
ohos.permission.ACCESS_BIOMETRIC 允许应用使用生物特征识别能力进行身份认证。
ohos.permission.ACCESS_NOTIFICATION_POLICY 在本设备上允许应用访问通知策略。 仅当控制铃声从静音到非静音时需要申请该权限。
ohos.permission.GET_NETWORK_INFO 允许应用获取数据网络信息。
ohos.permission.GET_WIFI_INFO 允许应用获取Wi-Fi信息。
ohos.permission.GYROSCOPE 允许应用读取陀螺仪传感器的数据。
ohos.permission.INTERNET 允许使用Internet网络。
ohos.permission.KEEP_BACKGROUND_RUNNING 允许Service Ability在后台持续运行。
ohos.permission.NFC_CARD_EMULATION 允许应用实现卡模拟功能。
ohos.permission.NFC_TAG 允许应用读写Tag卡片。
ohos.permission.PRIVACY_WINDOW 允许应用将窗口设置为隐私窗口禁止截屏录屏
ohos.permission.PUBLISH_AGENT_REMINDER 允许该应用使用后台代理提醒。
ohos.permission.SET_WIFI_INFO 允许应用配置Wi-Fi设备。
ohos.permission.VIBRATE 允许应用控制马达振动。
ohos.permission.CAMERA 允许应用使用相机。
更多请参见官网《对所有应用开放》
2、user_grant用户授权
更多请参见官网《受限开放权限》
ohos.permission.READ_AUDIO 允许读取用户公共目录的音频文件。
ohos.permission.WRITE_AUDIO 允许修改用户公共目录的音频文件。
ohos.permission.READ_IMAGEVIDEO 允许读取用户公共目录的图片或视频文件。
ohos.permission.WRITE_IMAGEVIDEO 允许修改用户公共目录的图片或视频文件。
ohos.permission.SHORT_TERM_WRITE_IMAGEVIDEO 允许应用保存图片、视频到用户公共目录。应用获取此权限后最长可获得30分钟的短时授权来保存图片/视频。
ohos.permission.READ_CONTACTS 允许应用读取联系人数据。
ohos.permission.WRITE_CONTACTS 允许应用添加、移除或更改联系人数据。
ohos.permission.SYSTEM_FLOAT_WINDOW 允许应用使用全局悬浮窗的能力。
ohos.permission.READ_PASTEBOARD 允许应用读取剪贴板。
更多请参见官网《受限开放权限》
3、应用权限组列表 在申请目标权限前建议开发者先阅读应用权限管控概述-权限组和子权限了解相关概念再合理申请对应的权限组。 当应用请求权限时同一个权限组的权限将会在一个弹窗内一起请求用户授权用户同意授权后权限组内权限将被统一授权。地理位置、通讯录、通话记录、电话、信息、日历权限组除外。 当前系统支持的权限组如下所示各子权限的含义请查阅应用权限列表。
更多请参见官网《应用权限组列表》
位置 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.WRITE_IMAGEVIDEO ohos.permission.READ_IMAGEVIDEO ohos.permission.MEDIA_LOCATION
音乐和音频 ohos.permission.WRITE_AUDIO ohos.permission.READ_AUDIO
文件夹 ohos.permission.READ_WRITE_DOWNLOAD_DIRECTORY ohos.permission.READ_WRITE_DOCUMENTS_DIRECTORY
更多请参见官网《应用权限组列表》