OpenHarmony应用权限管理全解析:从理论到实战(1)

一、课程目标

本文章将系统讲解OpenHarmony应用权限管理的核心要点,帮助开发者:

1. 掌握system_grant(系统授权)与user_grant(用户授权)的区别与使用场景;
2. 学会应用权限的申请流程,包括配置文件声明与动态请求用户授权。

二、权限类型:system_grant vs user_grant

1. system_grant(系统授权)
  • 特点:安装应用时由系统自动授予,无需用户手动操作。(只需要声明权限就可以)
  • 适用场景:涉及基础功能且无需敏感数据的权限,如网络访问、设备信息读取等。
  • 配置方式:在module.json5中声明权限。
2. user_grant(用户授权)
  • 特点:需在应用运行时通过弹窗请求用户授权,用户同意后才生效。
  • 适用场景:涉及用户隐私或敏感操作的权限,如摄像头、麦克风、位置等。
  • 配置方式:在module.json5中声明权限,并通过代码动态请求

三、权限申请实操指南

1.明确需求

在openharmony找到我们需要权限的授权方式,权限级别下节我们再讲解

官网链接:OpenAtom OpenHarmony

2. 声明权限(配置文件)

module.json5中添加权限声明

官网链接:OpenAtom OpenHarmony

1. system_grant(系统授权)

比如说我们申请网络权限

"requestPermissions": [{
"name": "ohos.permission.INTERNET"
}],
2. user_grant(用户授权)
"requestPermissions": [
  {
    "name": "ohos.permission.MICROPHONE",
    "reason": "$string:module_desc",
    "usedScene": {
      "abilities": [
        "UIAbility"
      ],
      "when": "inuse"
    }
  }
],

ctr加左键可以配置申请权限的原因

假如我这里改成hello world

那后面拉起授权弹窗时:

3. 动态请求用户授权(user_grant)

在代码中调用API拉起授权弹窗:

import abilityAccessCtrl from '@ohos.abilityAccessCtrl';
import { Permissions } from '@ohos.abilityAccessCtrl';
import common from '@ohos.app.ability.common';
const context = getContext(this) as common.UIAbilityContext
@Entry
@Component
struct Index {
  @State message: string = 'Hello World';
  async   aboutToAppear(): Promise<void> {
    await this.requestMicrophone()
  }
  async  requestMicrophone(){
    const permissions:Array<Permissions> = ['ohos.permission.MICROPHONE']
    const atManger = abilityAccessCtrl.createAtManager()
    const requestResult =await atManger.requestPermissionsFromUser(
      context,
      permissions
    )
  }

  build() {
    Row() {
      Column() {
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
      }
      .width('100%')
    }
    .height('100%')
  }
}
3. 二次请求授权(后面再讲)
  • 若用户首次拒绝授权,应用无法再次直接弹窗请求
  • 需调用requestPermissionOnSetting(),跳转系统设置界面引导用户手动授权。

五、常见问题与注意事项

  1. 权限滥用风险
    • 仅申请必要权限,避免过度索取。
    • system_core权限需谨慎使用,需通过系统签名校验。
  1. 上架审核要求
    • usedScene字段需清晰描述权限使用场景,否则应用可能被驳回。
  1. 兼容性
    • 不同OpenHarmony版本权限机制可能略有差异,建议参考官方文档适配。

六、总结

通过本文,您已掌握:

  1. 权限类型:系统授权与用户授权的核心区别;
  2. 完整流程:从声明权限到动态请求用户授权的代码实现。

下一步建议:结合实际项目需求,合理规划权限申请策略,并遵循最小化权限原则,保障用户隐私与系统安全。


相关资源

欢迎在评论区交流探讨! 🚀


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值