本文同步发表于我的微信公众号,微信搜索 程语新视界 即可关注,每个工作日都有文章更新
鸿蒙(HarmonyOS)开发中,@kit.BasicServicesKit
是基础服务工具包,提供设备管理、错误处理、事件通知等核心功能。
一、模块概述
@kit.BasicServicesKit
包含以下核心能力:
- 设备信息(如设备型号、系统版本)
- 错误处理(
BusinessError
) - 事件通信(
Emitter
) - 剪贴板管理
- 系统能力检测
二、常用API与示例
1. 设备信息(DeviceInfo)
获取设备基础信息,如型号、品牌等。
import { deviceInfo } from '@kit.BasicServicesKit';
// 获取设备型号
const model: string = deviceInfo.model;
console.log(`设备型号: ${model}`);
// 获取系统版本
const osVersion: string = deviceInfo.osVersion;
console.log(`系统版本: ${osVersion}`);
关键属性:
model
:设备型号(如"Mate 60")brand
:品牌(如"HUAWEI")osVersion
:HarmonyOS版本(如"4.0.0")
2. 错误处理(BusinessError)
标准化错误对象,包含错误码和描述。
import { BusinessError } from '@kit.BasicServicesKit';
try {
// 模拟API调用
throw { code: 401, message: "参数错误" } as BusinessError;
} catch (err) {
const error = err as BusinessError;
console.error(`错误码: ${error.code}, 信息: ${error.message}`);
}
常见错误码:
201
:用户取消操作401
:参数无效801
:设备不支持
3. 事件通信(Emitter)
实现组件间或跨页面的轻量级事件通知。
import { emitter } from '@kit.BasicServicesKit';
// 发送事件
emitter.emit({
eventId: 1, // 事件ID
data: { key: "value" }
});
// 接收事件
emitter.on(1, (eventData) => {
console.log("收到事件:", eventData.data.key);
});
// 取消监听
emitter.off(1);
适用场景:
- 跨页面数据更新
- 状态同步
4. 剪贴板管理(Pasteboard)
读写系统剪贴板内容。
import { pasteboard } from '@kit.BasicServicesKit';
// 写入文本
pasteboard.setPlainText("复制内容");
// 读取文本
pasteboard.getPlainText((text: string) => {
console.log("剪贴板内容:", text);
});
注意:需申请权限 ohos.permission.PASTEBOARD_WRITE
5. 系统能力检测(Capability)
检查设备是否支持特定功能。
import { capability } from '@kit.BasicServicesKit';
// 检测蓝牙支持
const hasBluetooth: boolean = capability.check("SystemCapability.Communication.Bluetooth.Core");
console.log("蓝牙支持:", hasBluetooth);
常用能力标识:
SystemCapability.Multimedia.Camera
SystemCapability.Location.GPS
三、高级用法
1. 全局错误监听
appManager.on('error', (error: BusinessError) => {
hilog.error(0x0000, "App", `全局错误: ${error.code}`);
});
2. 结合Emitter实现状态共享
// 页面A发送数据更新
emitter.emit({ eventId: 1001, data: { refresh: true } });
// 页面B监听刷新
emitter.on(1001, () => this.loadData());
四、注意事项
- 权限申请:部分API需在
module.json5
中声明权限。 - 性能优化:高频事件使用
throttle
或debounce
避免过度渲染。
五、完整示例
@Entry
@Component
struct DeviceInfoPage {
@State model: string = deviceInfo.model;
@State osVersion: string = deviceInfo.osVersion;
build() {
Column() {
Text(`设备型号: ${this.model}`).fontSize(18)
Text(`系统版本: ${this.osVersion}`).margin(10)
Button("复制信息")
.onClick(() => pasteboard.setPlainText(this.model))
}
}
}