云网牛站
所在位置:首页 > HarmonyOS问题与回答 > 鸿蒙HarmonyOS获取当前蜂窝网络运营商类型

鸿蒙HarmonyOS获取当前蜂窝网络运营商类型

2021-06-18 15:47:39作者:sunflower稿源:HarmonyOS站

问题:鸿蒙HarmonyOS怎么获取当前蜂窝网络是移动、联通、还是电信?

 

回答:

请参考如下代码:

RadioInfoManager radioInfoManager = RadioInfoManager.getInstance(context);

List<SignalInformation> signalList = radioInfoManager.getSignalInfoList(0);

for (SignalInformation signal : signalList) {

int signalNetworkType = signal.getNetworkType();

if (signalNetworkType == TelephonyConstants.NETWORK_TYPE_LTE) {

LteSignalInformation lteSignal = (LteSignalInformation) signal;

}

}

 

说明:

以下是“获取当前蜂窝网络信号信息”的HarmonyOS开发文档内容:

一、场景介绍

应用通常需要获取用户所在蜂窝网络下信号信息,以便获取当前驻网质量。开发者可以通过本业务,获取到用户指定SIM卡当前所在网络下的信号信息。

二、接口说明

RadioInfoManager类中提供了获取当前网络信号信息列表的方法。

表1,如下图:RadioInfoManager的主要接口

鸿蒙HarmonyOS获取当前蜂窝网络运营商类型

三、开发步骤

1、调用RadioInfoManager的getInstance接口,获取到RadioInfoManager实例。

2、调用getSignalInfoList(slotId)方法,返回所有SignalInformation列表。

3、遍历SignalInformation列表,并分别根据signalNetworkType转换为对应制式的SignalInformation子类对象。

4、调用子类中的方法,获取信号强度信息。

// 获取RadioInfoManager对象。

RadioInfoManager radioInfoManager = RadioInfoManager.getInstance(context);

// 获取信号信息。

List<SignalInformation> signalList = radioInfoManager.getSignalInfoList(slotId);

// 检查信号信息列表大小。

if (signalList.size() == 0) {

  return;

}

// 依次遍历list获取当前驻网networkType对应的信号信息。

LteSignalInformation lteSignal = new LteSignalInformation();

for (SignalInformation signal : signalList) {

  int signalNetworkType = signal.getNetworkType();

  if (signalNetworkType == TelephonyConstants.NETWORK_TYPE_LTE) {

    lteSignal = (LteSignalInformation) signal;

  }

}

// 调用子类中相应方法,获取对应制式的信号强度信息。

int signalLevel = lteSignal.getSignalLevel();

精选文章
热门文章