【问题标题】:Android get MCC + MNC String for neighbouring cellsAndroid 获取相邻单元格的 MCC + MNC 字符串
【发布时间】:2019-09-15 12:04:15
【问题描述】:

移动国家代码由三位十进制数字组成,移动网络代码由两位或三位十进制数字组成(例如:001的MNC与01的MNC不同)https://en.wikipedia.org/wiki/Mobile_country_code

因此,将 MCC + MNC 作为字符串 how do you get the phone's MCC and MNC in Android? 可用于 SIM 卡插槽的主服务小区。

但是,我需要相邻单元格的这些值。

telephonyManager::getAllCellInfo

返回每个都很好地保存此信息的单元格列表(理论上),但我无法访问它。

我现在的minSdkVersion=26.

getAllCellInfo()!!.mapNotNull { cell ->
    when (cell) {
        is CellInfoGsm -> {
            println(cell.cellIdentity.mcc)
            println(cell.cellIdentity.mccString) // only available from 28 onwards
        }
    }
}
...

地点:

  1. cell.cellIdentity.mcc 已弃用
  2. cell.cellIdentity.mcc 返回一个整数。 IE。我错过了任何领先的 0 数字。

如何保存这些信息以准确找到合适的 MCC/MNC?

【问题讨论】:

    标签: android kotlin mobile mobile-country-code


    【解决方案1】:

    您只能对 Android 28 及更高版本使用新的mccString 方法。在较旧的 API 上,无法获得“01”和“001”的不同表示。但是,这些值应仅用于测试目的,不应在现实生活中遇到。因此,您可以禁止mcc 的弃用。

    telephonyManager.allCellInfo.forEach { cell ->
        if (cell is CellInfoGsm) {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
                println(cell.cellIdentity.mccString)
            } else {
                @Suppress("DEPRECATION")
                println(cell.cellIdentity.mcc)
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-24
      • 2021-10-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多