HarmonyOS 鸿蒙Next应用如何调用系统原生能力?
HarmonyOS 鸿蒙Next应用如何调用系统原生能力? 鸿蒙应用可以通过 plus API 调用系统原生能力,本文介绍如何调用相机、相册、定位、通讯录等系统功能,以及权限处理。
5 回复
?
啧啧
HarmonyOS Next应用通过ArkTS调用系统原生能力,主要使用以下方式:
- 扩展API:通过
import导入@ohos模块,如@ohos.ability.featureAbility访问基础能力 - Native API:直接调用系统提供的ArkTS/TS接口,如网络、通知、传感器等
- Ability框架:通过FA/PA模型与系统服务交互
- HAP包配置:在
module.json5中声明所需权限和依赖
具体调用示例:
import notification from '@ohos.notification'
// 直接调用系统通知能力
在HarmonyOS Next中,应用通过ArkTS API调用系统原生能力,而非“plus API”。核心是使用@ohos开头的系统能力模块,并遵循权限声明流程。
1. 调用流程:
- 导入模块: 在代码中导入对应的
@ohos模块。 - 声明权限: 在
module.json5配置文件中声明所需权限。 - 动态授权: 部分敏感权限需在运行时通过
abilityAccessCtrl模块触发用户授权弹窗。 - 调用API: 使用模块提供的异步接口实现功能。
2. 关键模块示例:
- 相机/相册: 使用
@ohos.multimedia.image(图片处理)和@ohos.file.picker(文件选择器)。 - 定位: 使用
@ohos.geoLocationManager。 - 通讯录: 使用
@ohos.contact。
3. 权限处理要点:
在module.json5的requestPermissions字段中声明权限。例如,访问相机需声明ohos.permission.CAMERA。对于需要用户动态授权的敏感权限,必须在访问前调用requestPermissionsFromUser接口。
示例(以定位为例):
- 声明权限 (
module.json5):
"requestPermissions": [
{
"name": "ohos.permission.LOCATION",
"reason": "$string:reason_desc",
"usedScene": {
"abilities": ["EntryAbility"],
"when": "always"
}
}
]
- 动态请求与调用 (ArkTS):
import { geoLocationManager } from '@ohos.geoLocationManager';
import { abilityAccessCtrl, Permissions } from '@ohos.abilityAccessCtrl';
// 1. 动态请求权限
let atManager = abilityAccessCtrl.createAtManager();
try {
await atManager.requestPermissionsFromUser(context, ['ohos.permission.LOCATION']);
} catch (err) {
// 处理授权失败
}
// 2. 获取位置
try {
let location = await geoLocationManager.getCurrentLocation();
console.log(`Location: ${location.latitude}, ${location.longitude}`);
} catch (err) {
// 处理错误
}
总结: HarmonyOS Next通过清晰的@ohos模块化API和分级的权限管理(静态声明+动态授权)来调用系统能力。开发时请直接查阅对应模块的官方API文档以获取最准确的接口定义和使用方式。

