鸿蒙三方库 | harmony-utils之NetworkUtil SIM卡信息查询详解
·
前言
SIM卡信息在运营商应用、双卡管理等场景中非常重要。@pura/harmony-utils 的 NetworkUtil 封装了SIM卡信息查询方法,开发者可以获取SIM卡状态、运营商名称等信息。本文将从API说明、代码实战、进阶用法、常见问题等多个维度进行全面讲解,帮助开发者快速掌握并应用到实际项目中。

一、NetworkUtil SIM核心API
NetworkUtil 提供了以下SIM卡信息查询方法:
| 方法 | 说明 | 返回类型 | 使用场景 |
|---|---|---|---|
getSimState() |
获取SIM卡状态 | SimState | SIM卡状态检测 |
isSimActive() |
判断SIM卡是否激活 | boolean | 功能可用性判断 |
getSimOperatorName() |
获取运营商名称 | string | 运营商展示 |
getSimCountryCode() |
获取国家代码 | string | 地区判断 |
1.1 核心特性
- 简洁易用:封装复杂API为一行调用,降低使用门槛
- 类型安全:完整的TypeScript类型定义,编译期即可发现错误
- 异常处理:内置异常捕获机制,避免运行时崩溃
- 双卡支持:支持双卡设备的信息查询
1.2 SIM卡状态对照
| 状态 | 说明 | 处理建议 |
|---|---|---|
| READY | 就绪 | 正常使用 |
| PIN_REQUIRED | 需要PIN码 | 引导输入PIN |
| PUK_REQUIRED | 需要PUK码 | 引导输入PUK |
| ABSENT | 未插入 | 提示插入SIM卡 |
二、完整使用步骤
2.1 安装依赖
ohpm install @pura/harmony-utils
2.2 查询SIM卡状态
import { NetworkUtil } from '@pura/harmony-utils';
Button('查询SIM卡状态')
.width('100%')
.onClick(() => {
try {
let state = NetworkUtil.getSimState();
let active = NetworkUtil.isSimActive();
this.result = `SIM状态: ${state}\n是否激活: ${active ? '是 ✅' : '否 ❌'}`;
} catch (e) {
this.result = '异常: ' + e;
}
})
2.3 查询运营商信息
Button('查询运营商')
.width('100%')
.onClick(() => {
try {
let operator = NetworkUtil.getSimOperatorName();
let country = NetworkUtil.getSimCountryCode();
this.result = `运营商: ${operator}\n国家代码: ${country}`;
} catch (e) {
this.result = '异常: ' + e;
}
})

三、完整页面示例
import { NetworkUtil } from '@pura/harmony-utils';
@Entry
@Component
struct SimDemo {
@State result: string = '';
build() {
Column({ space: 12 }) {
Button('查询SIM信息').width('100%').onClick(() => {
try {
let active = NetworkUtil.isSimActive();
let operator = NetworkUtil.getSimOperatorName();
this.result = `SIM激活: ${active ? '是' : '否'}\n运营商: ${operator}`;
} catch (e) { this.result = '异常: ' + e; }
});
Text(this.result).fontSize(14).fontColor('#333333')
}
.padding(16)
}
}
四、进阶用法
4.1 SIM卡状态检查流程
import { NetworkUtil, ToastUtil } from '@pura/harmony-utils';
function checkSimBeforeCall() {
if (!NetworkUtil.isSimActive()) {
ToastUtil.showToast('SIM卡未激活,无法拨打电话');
return false;
}
return true;
}
4.2 运营商定制功能
function getOperatorSpecificFeature(): string {
let operator = NetworkUtil.getSimOperatorName();
if (operator.includes('中国移动')) return 'cmcc_feature';
if (operator.includes('中国联通')) return 'cucc_feature';
return 'default_feature';
}
五、注意事项
- 权限要求:SIM卡信息查询需要相应权限
- 双卡设备:需指定SIM卡槽位
- 隐私合规:SIM卡信息属于用户隐私
- 初始化依赖:使用前需确保
AppUtil.init()已调用 - SIM卡变化:SIM卡可能被拔出或更换
六、常见问题
Q1: 双卡设备如何查询第二张SIM卡信息?
需要使用系统底层API指定SIM卡槽位索引,当前封装查询默认SIM卡。
Q2: getSimOperatorName()返回空字符串?
可能是SIM卡未插入或未激活,建议先检查SIM卡状态。
Q3: 如何监听SIM卡状态变化?
可以使用系统提供的SIM卡状态变化监听API,或定期查询状态。
Q4: SIM卡信息可以用于用户识别吗?
不建议仅依赖SIM卡信息识别用户,应结合其他标识方式。



总结
NetworkUtil 的SIM卡信息查询方法为运营商应用和双卡管理提供了数据支撑。本文详细介绍了核心API、使用步骤、完整示例、进阶用法以及常见问题的解决方案。开发者可以根据SIM卡信息实现运营商定制功能和SIM卡状态检测。
本文基于
@pura/harmony-utils工具库,更多功能请参考官方文档与后续系列文章。
更多推荐



所有评论(0)