0

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

所以要获得 MCC + MNC 作为字符串,如何在 Android 中获得手机的 MCC 和 MNC?可用于 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返回一个整数。即我错过了任何领先的0数字。

如何保存这些以准确找到正确的 MCC/MNC?

4

1 回答 1

0

mccString只能对 Android 28 及更高版本使用新方法。在较旧的 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)
        }
    }
}
于 2020-03-11T16:29:09.323 回答