【问题标题】:How to find out carrier's name in Android如何在 Android 中找出运营商的名称
【发布时间】:2022-01-09 18:28:34
【问题描述】:

如何在 Android 中找到运营商的名称?

【问题讨论】:

    标签: android


    【解决方案1】:

    自己没用过,看看TelephonyManager->getNetworkOperatorName()

    您可以尝试以下简单的方法:

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

    【讨论】:

    • TelephonyManager telephonyManager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
    • 问题是生成的字符串不是通知栏中写的载体。例如,MVNO没有显示。
    • 这需要特定权限吗?
    • @pableu 如果我使用双卡移动方式,我如何获得两个运营商名称?
    • @AlikElzin-kilaka 有一个 manager.getSimOperatorName() 方法。它在正常情况下返回相同的结果。但它可能(也可能不会,我从未测试过)在漫游时返回不同的结果。如果您担心漫游会更糟,请尝试一下。
    【解决方案2】:
    TelephonyManager telephonyManager = ((TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE));
    String operatorName = telephonyManager.getNetworkOperatorName();
    

    【讨论】:

    • 如何从10位电话号码中检测出运营商?
    • 在巴西不适合我,空了。只有“getSimOperatorName()”->“Claro BR”
    • 如果有可用的网络并且用户选择了用于连接互联网的 sim,则网络名称可用。在 Android 7 双卡手机上对此进行了测试,它仅在上述情况下返回名称。甚至 getSimOperator() 至少在我的测试手机上的行为方式相同。
    【解决方案3】:

    如果需要@Waza_Be 询问的通知栏上显示的运营商的运营商名称。可以改用 getSimOperatorName 方法,因为有几家电信公司将他们的网络转租给其他公司。

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

    【讨论】:

    • 它返回主要 sim 操作员 fr dual sim ..如何获得两个 sim 的操作
    • 嗨@SrishtiRoy,您需要的似乎仅在 API 级别 22 及更高级别上受支持。检查接受的答案 here: 上的 cmets。 Android 文档here
    【解决方案4】:

    Kotlin 空安全实现:

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

    【讨论】:

      【解决方案5】:

      你可以试试这样的东西 - 最新的工作和改进的代码

      在 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;
        }
      }
      

      在科特林

       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
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2017-02-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-28
        • 1970-01-01
        • 2017-04-03
        • 1970-01-01
        • 2014-02-06
        相关资源
        最近更新 更多