发表时间:2019-10-20
内容总览
本文会给出在 Android 上获取运营商的方法,几个相近方法结果的差异,以及在多卡情况下有效的获取方式。最后额外提一下一种不需要请求设备识别码获取运营商信息的方法。提供可运行的 demo 源码。
MCC 和 MNC
首先介绍一下这两个码,也是获取运营商所必须的。
MCC,Mobile Country Code,移动设备国家代码。MNC,Mobile Network Code,移动设备网络代码。MCC 和 MNC 串在一起后,可以用来表示唯一的移动设备运营商。我国的 MCC 是 460,MNC 则会出现一个运营商拥有多个的情况,比如联通有 01、06、09。当前的码表可以在这个维基页面找到。
于是可以先根据码表来构建这么一个类:
enum class NetworkOperator(val opName: String) {
Mobile("移动"),
Unicom("联通"),
Telecom("电信"),
Tietong("铁通"),
Other("其他");
companion object {
/**
* 根据 [code](MCC+MNC) 返回运营商
*/
fun from(code: Int) = when (code) {
46000, 46002, 46004, 46007, 46008 -> Mobile
46001, 46006, 46009 -> Unicom