编辑本段结构组合
IMSI共有15位,其结构如下: MCC+MNC+MSIN MCC:Mobile Country Code,移动国家码,MCC的资源由国际电联(ITU)统一分配和管理,唯一识别移动用户所属的国家,共3位, 中国 为460; MNC:Mobile Network Code, 移动网络 码,共2位,中国移动系统使用00、02、07,中国联通 GSM系统 使用01,中国电信 CDMA系统 使用03,一个典型的IMSI号码为460030912121001; MSIN:Mobile Subscriber Identification Number, 移动用户识别号码,共有10位,其结构如下: EF+M0M1M2M3+ABCD 其中的M0M1M2M3和MDN号码中的H0H1H2H3可存在对应关系,ABCD四位为自由分配。 可以看出IMSI在NMSI号码前加了MCC,可以区别出每个用户的来自的国家,因此可以实现国际漫游。在同一个国家内,如果有多个移动网络运营商,可以通过MNC来进行区别. ================================ 区别于IMEI:International Mobile Equipment Identity (国际移动设备标识) 国际移动用户识别码与开源项目OpenBTS 是基于软件的 GSM 接入口,它提供标准的GSM兼容的移动手机,不需使用现成的电话提供商的接口,来拨打现有电话系统的接口。OpenBTS是以第一个基于开源软件的工业标准的GSM协议栈而闻名。OpenBTS 使用的是国际移动用户识别码(IMSI) international mobile subscriber identity 。OpenBTS 和 OpenBSC 提供了在一个较低的层次上了解更多关于 GSM 网络的技术的开源平台。
tm = (TelephonyManager) this.getSystemService(TELEPHONY_SERVICE);
/*
* Returns the ISO country code equivalent for the SIM provider's country code.
* 获取ISO国家码,相当于提供SIM卡的国家码。
*
*/
String simISO= tm.getSimCountryIso();//String
/*
* Returns the MCC+MNC (mobile country code + mobile network code) of the provider of the SIM. 5 or 6 decimal digits.
* 获取SIM卡提供的移动国家码和移动网络码.5或6位的十进制数字.
* SIM卡的状态必须是 SIM_STATE_READY(使用getSimState()判断).
*/
String simOPER=tm.getSimOperator();//String
/*
* 服务商名称:
* 例如:中国移动、联通
* SIM卡的状态必须是 SIM_STATE_READY(使用getSimState()判断).
*/
String simOPERname=tm.getSimOperatorName();//String
/*
* SIM卡的序列号:
* 需要权限:READ_PHONE_STATE
*/
String simSerial= tm.getSimSerialNumber();//String
/*
* SIM的状态信息:
* SIM_STATE_UNKNOWN 未知状态 0
SIM_STATE_ABSENT 没插卡 1
SIM_STATE_PIN_REQUIRED 锁定状态,需要用户的PIN码解锁 2
SIM_STATE_PUK_REQUIRED 锁定状态,需要用户的PUK码解锁 3
SIM_STATE_NETWORK_LOCKED 锁定状态,需要网络的PIN码解锁 4
SIM_STATE_READY 就绪状态 5
*/
int simState=tm.getSimState();//int
可以在终端 adb 进入后使用getprop 查看sim卡的使用情况(双卡也可)
通过SystemProperties获取字段信息 需要系统权限
比如有了权限 可以直接获取里面的字段信息
String providerName=SystemProperties.get(TelephonyProperties.PROPERTY_ICC_OPERATOR_ALPHA);