如何区分当前手机号是哪个运行商的方法

首先是科普小知识:

MSI
国际移动用户识别码(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,移动网络码,由两位数字组成,用于识别移动用户所归属的移动网.
MIN:移动用户识别号码,是一个十位的等长号码.

可以看出IMSI在MIN号码前加了MCC,可以区别出每个用户的来自的国家,因此可以实现国际漫游。在同一个国家内,如果有多个CDMA运营商,可以通过MNC来进行区别.

IMEI
国际移动装备辨识码   International Mobile Equipment Identity
由15位数字组成的"电子串号",它与每台手机一一对应,而且该码是全世界唯一的。每一只手机在组装完成后都将被赋予一个全球唯一的一组号码,这个号码从生产到交付使用都将被制造生产的厂商所记录。

首先你要知道什么是手机串号,IMEI俗称“串号”存储在手机的EEPROM(俗称码片)里,每一个移动设备都对一个唯一的IMEI。其组成结构为TAC(6位数字)+FAC(两位数字)+SNR(6位数字)+SP (1位数字)。TAC(设备型号核准号码),由欧洲型号认证中心分配。如果熟悉并了解这个号码对我们今后识别手机会起到非常大的作用.首先TAC码前三位在不同的时期会发生变化,过去的TAC码前三位在现在的手机上不会出现。过去的一些老型号的手机基本上都是446/448开头,如moto v328 nokia 7110,而且即使同一部手机在不同的时期也会有不同的TAC码如大家最熟悉的8210升级8250,如果前三位是448902就不能升级,因为CPU不同。因此过去所说的只要是同一型号的手机TAC码一定一样的说法是不够准确的,再如爱立信的同一型号手机T39MC在不同地区的地方亦会有不同的号码大陆行货为520406香港则为520407。我们知道这些区别后就可以通过TAC码来进行“设备识别”了,而不必去费心的去牢记IMEI的7.8位数字代表的产地。

第二,利用IMSI号区分当前使用的手机号是哪个运营商的,无论是双卡双待机型,还是移动,联通或电信的定制机,都可以区分。具体代码如下:

TelephonyManager telephonyManager = (TelephonyManager) this

.getSystemService(Context.TELEPHONY_SERVICE);

String android_imsi = telephonyManager.getSubscriberId();// 获取手机IMSI号

if (android_imsi != null) {

if (android_imsi.startsWith("46000")

|| android_imsi.startsWith("46002")) {

imsinetwrok = "中国移动";

} else if (android_imsi.startsWith("46001")) {

imsinetwrok = "中国联通";

} else if (android_imsi.startsWith("46003")) {

imsinetwrok = "中国电信";

}

}


你可能感兴趣的:(根据手机号,区分运营商)