Android 应用程序获取手机的 IMSI 码

国际移动用户识别码(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+MIN

MCC:Mobile Country Code,移动国家码,共3位,中国为460;

MNC:Mobile Network Code,移动网络码,共2位,联通CDMA系统使用03,一个典型的IMSI号码为460030912121001;

MIN共有10位,其结构如下:

09+M0M1M2M3+ABCD

其中的M0M1M2M3和MDN号码中的H0H1H2H3可存在对应关系,ABCD四位为自由分配。

可以看出IMSI在MIN号码前加了MCC,可以区别出每个用户的来自的国家,因此可以实现国际漫游。在同一个国家内,如果有多个CDMA运营商,可以通过MNC来进行区别.
public void fetch_status(){  
     TelephonyManager tm = (TelephonyManager) 
     this.getSystemService(Context.TELEPHONY_SERVICE);//      
     String str = "";  
     str += "DeviceId(IMEI) = " + tm.getDeviceId() + "\n";    
     str += "DeviceSoftwareVersion = " + tm.getDeviceSoftwareVersion() + "\n";    
     str += "Line1Number = " + tm.getLine1Number() + "\n";    
     str += "NetworkCountryIso = " + tm.getNetworkCountryIso() + "\n";    
     str += "NetworkOperator = " + tm.getNetworkOperator() + "\n";    
     str += "NetworkOperatorName = " + tm.getNetworkOperatorName() + "\n";    
     str += "NetworkType = " + tm.getNetworkType() + "\n";    
     str += "PhoneType = " + tm.getPhoneType() + "\n";    
     str += "SimCountryIso = " + tm.getSimCountryIso() + "\n";    
     str += "SimOperator = " + tm.getSimOperator() + "\n";    
     str += "SimOperatorName = " + tm.getSimOperatorName() + "\n";    
     str += "SimSerialNumber = " + tm.getSimSerialNumber() + "\n";    
     str += "SimState = " + tm.getSimState() + "\n";    
     str += "SubscriberId(IMSI) = " + tm.getSubscriberId() + "\n";    
     str += "VoiceMailNumber = " + tm.getVoiceMailNumber() + "\n";    
     TextView sys = (TextView) findViewById(R.id.sys);  
     sys.setText(str);  
}  

你可能感兴趣的:(android,职场,sdk,IMSI,休闲)