如何在安卓系统中查找运营商名称

84

我该如何在安卓系统中查找运营商名称?

5个回答

144

我自己从未使用过,但可以看看TelephonyManager->getNetworkOperatorName()

你可以尝试这么简单的方法:

TelephonyManager manager = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
String carrierName = manager.getNetworkOperatorName();

1
TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); - Someone Somewhere
1
问题在于通知栏中显示的字符串不是载体本身。例如,MVNO没有显示出来。 - Waza_Be
2
这需要特定的权限吗? - AlikElzin-kilaka
4
如果我使用双卡手机,我该如何获取两个运营商的名称? - Karthikeyan Ve
1
@AlikElzin-kilaka,有一个manager.getSimOperatorName()方法。在正常情况下,它返回相同的结果。但是在漫游时可能(也可能不会,我从未测试过)返回不同的结果。如果你关心漫游问题,最好试一试。 - Alireza Ahmadi
显示剩余3条评论

26
TelephonyManager telephonyManager = ((TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE));
String operatorName = telephonyManager.getNetworkOperatorName();

如何从10位电话号码中检测运营商? - Pankaj Nimgade
在巴西对我不起作用,返回为空。只有“getSimOperatorName()” - > “Claro BR”。 - meszias
如果有网络可用且用户选择了SIM卡连接到互联网,网络名称将可用。在我的Android 7双卡手机上测试过,并且在上述条件下仅返回名称。即使是getSimOperator()在我的测试手机上也是如此。 - Ankit

12

如果有人需要像@Waza_Be问的那样在通知栏中显示运营商名称,可以使用getSimOperatorName方法,因为一些电信公司会将其网络租赁给其他公司。

TelephonyManager telephonyManager = ((TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE));
String simOperatorName = telephonyManager.getSimOperatorName();

1
返回双卡的主要SIM运营商...如何获取两个SIM卡的OPS - Srishti Roy
2
嗨,@SrishtiRoy,看起来你所需要的仅在API级别22及以上支持。在接受的答案此处:中查看评论。Android文档此处 - velval

1
一个 Kotlin 的空安全实现:

val operatorName = (context.getSystemService(Context.TELEPHONY_SERVICE) as? TelephonyManager)?.networkOperatorName ?: "unknown"

0

你可以尝试类似这样的代码 - 最新的工作和改进后的代码

使用JAVA语言

String getCarrierName() {
  try {
     TelephonyManager manager = (TelephonyManager) OneSignal.appContext.getSystemService(Context.TELEPHONY_SERVICE);
     // May throw even though it's not in noted in the Android docs.
     // Issue #427
     String carrierName = manager.getNetworkOperatorName();
     return "".equals(carrierName) ? null : carrierName;
  } catch(Throwable t) {
     t.printStackTrace();
     return null;
  }
}

在 Kotlin 中
 fun getCarrierName(): String? {
    return try {
        val manager =
            App.instance.getSystemService(Context.TELEPHONY_SERVICE) as TelephonyManager
        // May throw even though it's not in noted in the Android docs.
        // Issue #427
        val carrierName = manager.networkOperatorName
        if ("" == carrierName) null else carrierName
    } catch (t: Throwable) {
        t.printStackTrace()
        null
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接