鸿蒙权限模型重大变更核心信息

37 阅读3分钟

一、权限模型架构升级

1.1 权限分级体系重构

  • 普通权限:不涉及敏感数据的基础权限(如网络访问)
  • 敏感权限:需用户明确授权的权限(如摄像头、定位)
  • 特殊权限:涉及系统核心功能的权限(如修改系统设置)

二、核心技术变更

2.1 动态分级授权机制

  • 权限敏感度分级:SENSITIVE(敏感)、CRITICAL(关键)等
  • 运行时动态权限吊销:支持单次使用权限、限时使用权限
  • 权限使用场景说明:必须在申请时明确说明使用场景和原因

2.2 安全访问机制革新

  • 从"管权限"到"管数据" :用户直接管理数据访问而非抽象权限
  • 最小化授权原则:仅授予应用所需的最小权限集
  • 精准数据访问:如仅允许访问用户指定的单张照片而非整个相册

三、代码示例对比

3.1 API 11权限申请

// 一次性申请所有权限
requestPermissions(['ohos.permission.CAMERA', 'ohos.permission.MICROPHONE'], (result) => {
  console.log('Permission result:' + result)
})

3.2 API 12+动态分级授权

// 按需申请敏感权限
import { SensitivityLevel } from '@ohos.security'
​
accessControl.requestPermission({
  permission: 'ohos.permission.BODY_SENSORS',
  sensitivity: SensitivityLevel.SENSITIVE_HEALTH_DATA,
  rationale: '用于监测心率变化'
})

四、应用案例分析

4.1 金融理财领域

  • 东方财富、光大银行:点对点读取身份证图片和联系人信息
  • 权限控制:相册和通讯录隐私得到有效保护

4.2 旅行出行领域

  • 携程、飞猪:调用位置权限后,用完即关,不留行程轨迹
  • 安全机制:位置信息访问具有时效性和场景限制

4.3 购物修图类应用

  • 淘宝、美图秀秀:上传照片时仅允许用户单张选取
  • 防护效果:有效杜绝后台偷窥行为

五、关键安全特性

5.1 安全Picker功能

  • 免弹框授权:减少76%的授权弹框出现率
  • 细粒度数据访问:用户可精确控制应用能访问的具体数据项

5.2 隐私保护增强

  • 隐私灯提示:实时显示应用对敏感权限的调用情况
  • 权限使用记录:用户可查看应用访问权限的历史记录
  • 文件加密分享:支持系统级的文件加密,防止截屏和篡改

六、开发最佳实践

6.1 权限申请四原则

  1. 最小化原则:只申请当前场景必须权限
  2. 透明化原则:清晰说明权限申请原因
  3. 场景化申请:在使用对应功能时才申请权限
  4. 尊重用户选择:用户拒绝授权时提供合理降级方案

6.2 敏感权限监控方案

// 权限状态实时监听
accessToken.on('permissionChange', (info) => {
  if (info.permission === "ohos.permission.CAMERA") {
    if (info.status === 'REVOKED') {
      // 关闭相机相关功能
    }
  }
})

七、与其他系统对比

对比项目鸿蒙系统iOS系统Android系统
权限分类精细度非常精细,分为访问个人数据和使用设备功能两大类较精细,分为不同权限类别较为精细,权限分类较多
授权方式灵活性系统授权与用户动态授权结合,可精细控制权限范围和时长主要依赖用户授权,时长控制有限用户授权为主,控制相对复杂
隐私提醒及时性实时提醒,应用尝试访问敏感权限时立即弹出提醒有提醒,但部分场景不够及时提醒机制存在,但显著程度有待提高
应用来源安全性纯净模式确保只有安全应用可安装App Store审核机制保障安全Google Play有审核,但应用安全参差不齐