在华为 HarmonyOS 应用开发中,涉及各类硬件或敏感信息访问的权限需在配置文件(module.json5)中声明,部分危险权限还需动态申请。以下是你提到的相关权限名称及说明(基于 HarmonyOS API 9 及以上版本,具体以官方最新文档为准):
| 功能需求 | 权限名称 | 权限类型 | 说明 |
|---|---|---|---|
| 摄像头 | ohos.permission.CAMERA | 危险权限 | 用于访问设备摄像头,需动态申请。 |
| 话筒(麦克风) | ohos.permission.MICROPHONE | 危险权限 | 用于访问设备麦克风(录音、语音输入等),需动态申请。 |
| 日历(读取) | ohos.permission.READ_CALENDAR | 危险权限 | 用于读取系统日历数据,需动态申请。 |
| 日历(写入) | ohos.permission.WRITE_CALENDAR | 危险权限 | 用于修改系统日历数据,需动态申请。 |
| 位置(前台) | ohos.permission.LOCATION | 危险权限 | 用于在应用前台时获取设备位置信息(如 GPS),需动态申请。 |
| 位置(后台) | ohos.permission.LOCATION_IN_BACKGROUND | 危险权限 | 用于应用在后台时持续获取位置信息,需动态申请(需额外声明)。 |
| 通信录(读取) | ohos.permission.READ_CONTACTS | 危险权限 | 用于读取系统联系人数据(姓名、电话等),需动态申请。 |
| 通信录(写入) | ohos.permission.WRITE_CONTACTS | 危险权限 | 用于修改系统联系人数据,需动态申请。 |
| 内部存储访问 | 无需单独声明 | 默认权限 | 应用可直接访问自身沙箱内的内部存储(如/data/data/包名),无需额外权限。 |
| 蓝牙(基础) | ohos.permission.BLUETOOTH | 普通权限 | 用于启用蓝牙、查询蓝牙状态等基础操作,仅需声明。 |
| 蓝牙(管理) | ohos.permission.BLUETOOTH_ADMIN | 危险权限 | 用于配对蓝牙设备、修改蓝牙设置等,需动态申请。 |
| 蓝牙(扫描) | ohos.permission.ACCESS_BLUETOOTH_SCAN | 危险权限 | 用于扫描附近蓝牙设备,需动态申请(API 10+)。 |
| 蓝牙(连接) | ohos.permission.ACCESS_BLUETOOTH_CONNECT | 危险权限 | 用于连接蓝牙设备,需动态申请(API 10+)。 |
| 外部存储(读取) | ohos.permission.READ_EXTERNAL_STORAGE | 危险权限 | 用于读取外部存储(如 SD 卡)中的文件,需动态申请(API 9 及以下)。 |
| 外部存储(写入) | ohos.permission.WRITE_EXTERNAL_STORAGE | 危险权限 | 用于写入外部存储,需动态申请(API 9 及以下;API 10 + 推荐使用更细化的媒体权限)。 |
| 指纹(生物识别) | ohos.permission.USE_BIOMETRIC | 危险权限 | 用于使用生物识别(包括指纹、面部等)进行身份验证,需动态申请。 |
| RFC(推测为 NFC) | ohos.permission.NFC | 危险权限 | 用于访问近场通信(NFC)功能,需动态申请。 |
| 陀螺仪 | ohos.permission.GYROSCOPE | 普通权限 | 用于访问陀螺仪传感器数据,仅需声明(API 8+)。 |
| Type-C 数据口 | ohos.permission.USB_ACCESSORY | 危险权限 | 用于通过 Type-C 接口与外部设备(如 U 盘、外设)通信,需动态申请。 |
| Type-C 数据口(管理) | ohos.permission.MANAGE_USB | 危险权限 | 用于管理 USB 设备连接、配置等高级操作,需动态申请。 |
注意事项:
-
权限类型区分:
- 危险权限(如摄像头、位置):必须在
module.json5中声明,并在代码中通过requestPermissionsFromUser动态申请,用户授权后才能使用。 - 普通权限(如陀螺仪、基础蓝牙):仅需在
module.json5中声明,无需动态申请。
- 危险权限(如摄像头、位置):必须在
-
API 版本差异:部分权限(如蓝牙扫描 / 连接、外部存储)在 API 10 + 中有细化调整,建议结合目标设备的 API 版本选择权限(可通过
@syscap标注适配范围)。 -
配置文件声明示例:在
module.json5的requestPermissions中添加权限:
{
"module": {
"requestPermissions": [
{ "name": "ohos.permission.CAMERA" },
{ "name": "ohos.permission.LOCATION" }
]
}
}
5.动态申请示例:通过AbilityContext的requestPermissionsFromUser申请危险权限:
import { abilityAccessCtrl, Permissions } from '@ohos.abilityAccessCtrl';
async requestCameraPermission() {
let context = getContext(this) as common.UIAbilityContext;
let atManager = abilityAccessCtrl.createAtManager();
try {
// 检查是否已授权
let status = await atManager.checkPermission(context, Permissions.CAMERA);
if (status === abilityAccessCtrl.GrantStatus.PERMISSION_GRANTED) {
console.log("已授权摄像头权限");
} else {
// 申请权限
let result = await context.requestPermissionsFromUser([Permissions.CAMERA]);
if (result.grantedPermissions.length > 0) {
console.log("用户授权摄像头权限");
} else {
console.log("用户拒绝摄像头权限");
}
}
} catch (err) {
console.error("权限申请失败:", err);
}
}
626

被折叠的 条评论
为什么被折叠?



