前言

SIM卡信息在运营商应用、双卡管理等场景中非常重要。@pura/harmony-utilsNetworkUtil 封装了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';
}

五、注意事项

  1. 权限要求:SIM卡信息查询需要相应权限
  2. 双卡设备:需指定SIM卡槽位
  3. 隐私合规:SIM卡信息属于用户隐私
  4. 初始化依赖:使用前需确保 AppUtil.init() 已调用
  5. 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 工具库,更多功能请参考官方文档与后续系列文章。

Logo

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

更多推荐