前言

获取设备品牌、型号、系统版本等信息是应用适配和数据分析的基础。@pura/harmony-utilsDeviceUtil 封装了完整的设备信息获取方法,开发者可以一行代码获取设备品牌、型号、API版本等关键信息。本文将从API说明、代码实战、进阶用法、常见问题等多个维度进行全面讲解,帮助开发者快速掌握并应用到实际项目中。

在这里插入图片描述

一、DeviceUtil设备信息核心API

DeviceUtil 提供了以下设备信息获取方法,覆盖品牌、型号、系统版本等关键信息:

方法 说明 返回类型 使用场景
getBrand() 获取设备品牌 string 品牌适配、数据统计
getModel() 获取设备型号 string 设备适配
getProductModel() 获取产品型号 string 产品区分
getSdkApiVersion() 获取SDK API版本 number 版本兼容检查
getOsFullName() 获取系统完整版本名 string 版本展示
getOsReleaseType() 获取系统发布类型 string 版本类型判断

1.1 核心特性

  • 信息全面:覆盖设备品牌、型号、系统版本等关键信息
  • 类型安全:完整的TypeScript类型定义,编译期即可发现错误
  • 异常处理:内置异常捕获机制,避免运行时崩溃
  • 无需权限:设备基础信息获取无需特殊权限

1.2 系统版本信息对比

信息类型 示例值 用途
SdkApiVersion 12 功能兼容性判断
OsFullName HarmonyOS 5.0.0 版本展示
OsReleaseType Release 版本类型判断

二、完整使用步骤

2.1 安装依赖

ohpm install @pura/harmony-utils

2.2 获取品牌与型号

import { DeviceUtil } from '@pura/harmony-utils';

Button('获取品牌型号')
  .width('100%')
  .onClick(() => {
    try {
      let brand = DeviceUtil.getBrand();
      let model = DeviceUtil.getModel();
      let productModel = DeviceUtil.getProductModel();
      this.result = `品牌: ${brand}\n型号: ${model}\n产品型号: ${productModel}`;
    } catch (e) {
      this.result = '异常: ' + e;
    }
  })

2.3 获取系统版本

Button('获取系统版本')
  .width('100%')
  .onClick(() => {
    try {
      let apiVersion = DeviceUtil.getSdkApiVersion();
      let osName = DeviceUtil.getOsFullName();
      let releaseType = DeviceUtil.getOsReleaseType();
      this.result = `API版本: ${apiVersion}\n系统版本: ${osName}\n发布类型: ${releaseType}`;
    } catch (e) {
      this.result = '异常: ' + e;
    }
  })

在这里插入图片描述

三、完整页面示例

import { DeviceUtil } from '@pura/harmony-utils';

@Entry
@Component
struct DeviceInfoDemo {
  @State result: string = '';

  build() {
    Column({ space: 12 }) {
      Button('获取全部设备信息').width('100%').onClick(() => {
        try {
          let brand = DeviceUtil.getBrand();
          let model = DeviceUtil.getModel();
          let apiVersion = DeviceUtil.getSdkApiVersion();
          let osName = DeviceUtil.getOsFullName();
          this.result = `品牌: ${brand}\n型号: ${model}\nAPI: ${apiVersion}\n系统: ${osName}`;
        } catch (e) { this.result = '异常: ' + e; }
      });
      Text(this.result).fontSize(14).fontColor('#333333')
    }
    .padding(16)
  }
}

四、进阶用法

4.1 版本兼容性检查

import { DeviceUtil } from '@pura/harmony-utils';

function isApiVersionSupported(minApi: number): boolean {
  return DeviceUtil.getSdkApiVersion() >= minApi;
}

// 使用示例
if (isApiVersionSupported(12)) {
  // 使用API 12+的新特性
} else {
  // 降级方案
}

4.2 设备信息上报

import { DeviceUtil } from '@pura/harmony-utils';

function collectDeviceInfo(): Record<string, string> {
  return {
    brand: DeviceUtil.getBrand(),
    model: DeviceUtil.getModel(),
    apiVersion: String(DeviceUtil.getSdkApiVersion()),
    osVersion: DeviceUtil.getOsFullName()
  };
}

五、注意事项

  1. 适配不同设备:根据品牌和型号做差异化适配
  2. 版本兼容检查:通过API版本判断功能可用性
  3. 数据统计:收集设备信息用于用户画像分析
  4. 初始化依赖:使用前需确保 AppUtil.init() 已调用
  5. 信息缓存:设备信息通常不变,可缓存避免重复获取

六、常见问题

Q1: getBrand()返回的是什么格式?

返回设备品牌名称,如 “HUAWEI”、“HONOR” 等,具体值取决于设备厂商。

Q2: getModel()和getProductModel()有什么区别?

getModel() 返回设备型号,getProductModel() 返回产品型号,两者在某些设备上可能相同。

Q3: 如何判断当前系统是否支持某个API?

使用 getSdkApiVersion() 获取当前API版本号,与目标API版本进行比较即可。

Q4: 设备信息可以用于崩溃日志吗?

非常适合,将设备信息附加到崩溃日志中可以帮助快速定位和复现问题。

在这里插入图片描述
在这里插入图片描述

总结

DeviceUtil 的设备信息获取方法让开发者能够快速了解运行环境,为应用适配和数据分析提供基础数据支撑。本文详细介绍了核心API、使用步骤、完整示例、进阶用法以及常见问题的解决方案。这些信息在多设备适配、版本兼容等场景中非常实用。

本文基于 @pura/harmony-utils 工具库,更多功能请参考官方文档与后续系列文章。

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐