移动,联通,电信 sim 在android 应用中

国际移动用户识别码(IMSI) international mobile subscriber identity
  国际上为唯一识别一个移动用户所分配的号码。
  从技术上讲,IMSI可以彻底解决国际漫游问题。但是由于 北美 目前仍有大量的 AMPS系统 使用MIN号码,且北美的MDN和MIN采用相同的编号,系统已经无法更改,所以目前国际漫游暂时还是以MIN为主。其中以O和1打头的MIN资源称为IRM(International Roaming MIN),由IFAST (International Forum on ANSI-41 Standards Technology)统一管理。目前联通申请的IRM资源以09打头。可以看出,随着用户的增长,用于国际漫游的MIN资源将很快耗尽,全球统一采用IMSI标识用户势在必行.

编辑本段结构组合

  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);

你可能感兴趣的:(移动,联通,电信 sim 在android 应用中)