Android手机唯一识别IMSI

现在Android应用APP越来越多,服务器对APP使用的用户权限管理的越来越严格,如使用Request_Token令牌来控

制服务器的API,然后服务器管理用户的复杂度也高了。以前在开发APP的时候使用的是手机的IMEI作为唯一表示机器

码,但是当刷机、系统还原出厂设置 这2种情况下,手机的IMEI都会改变,所以有时候回出现以前绑定的IMEI在服务

数据库对应的用户移动设备,当用户刷机、还原出厂设置  此时用户手机上的IMEI就改变了,当用户登录时,提交的

IMEI与服务器数据库的IMEI就不一样了,然而得出来得结论:只有当用户不刷机、不还原出厂设置的情况下,手机的

IMEI才是不变的。后面找到一个相对唯一的手机信息码----IMSI

1、IMSI的中文解析定义:

国际移动用户识别码(IMSI) International Mobile Subscriber Identity

国际上为唯一识别一个移动用户所分配的号码。

2、技术运用上解析:

从技术上讲,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来进行区别.

3、开发常用手机信息:

/***

* 获取手机的信息

*/

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

}

时间: 2024-10-10 23:02:23

Android手机唯一识别IMSI的相关文章

Android手机获取手机唯一识别号(转)

写在前面,发这个帖我想,可能很多人用不到,那你就当科普了解了,其实每个游戏,软件都会获取你的imei废话不说,开始! 在开发手机应用时,开发者最关心的是开发的手机软件有多少用户安装,并且正在使用.这就需要识别手机的唯一性.目前我了解的有两种方法,获取手机的 imei号(imei号是唯一识别手机的号码).获取android id号(android id 是手机系统的唯一号码). 第一种方法: android获取手机imei号的方法在在android系统中获取imei号和其他手机信息一文中做了详细的

Android手机助手识别机型浅析

最近在做PAD项目,QA提交了一个bug,用iTools管理PAD时,iTools显示的设备与目标机型的设备型号不一致,在其他豌豆荚,百度等手机助手并没有遇到这个问题.为了解决该问题,首先查询机器system目录下的prop.build中关于设备的说明是否有影响.主要包含: ro.product.model=型号_modle ro.product.brand=品牌_brand ro.product.name=手机名称_name -- ro.product.cpu.abi=armeabi-v7a

android手机唯一识别码

// http://blog.csdn.net/billpig/article/details/6728573 public UUID DeviceUuidBuild(Context context) { synchronized (this) { if( uuid == null) { final SharedPreferences prefs = context.getSharedPreferences( PREFS_FILE, 0); final String id = prefs.get

Android应用怎么实现免注册,直接获取手机唯一标识进行登录

============问题描述============ 如题 就是我设计的app登录的时候是直接登录而不需要注册,看到网上说是通过获取Android 手机上物理唯一标识码,见到的都是说通过cpu号和 mac 地址. 想问一下是怎么获取的 能有代码是最好的 ============解决方案1============ 都知道网上查了,为什么不会顺便查下代码呢? http://cache.baiducontent.com/c?m=9d78d513d9901df918b0cf281a16a6375b1

不想手动输入车牌号?手机Android端车牌识别助你一臂之力!

关键词:手机车牌识别 Android端车牌识别 移动端车牌识别 车牌识别 随着车辆的暴涨,对车辆的管理也是日益严峻.需要更多灵活的有效的管理方式,伴随着移动端APP的火爆应用,北京易泊时代将原来应用在电脑端的车牌识别技术转移到了手机Android端,手机Android端车牌识别更加灵活,方便,为人们的应用解决了很多实际困难. 手机Android端车牌识别产品描述 手机Android端车牌识别系统是北京易泊时代开发的基于移动平台的证件识别应用程序,支持Android/IOS等多种主流移动操作系统.

android手机自带浏览器无法识别apk文件

原文:http://www.cnblogs.com/yaozhongxiao/archive/2013/07/17/3194765.html 在项目中遇到安卓自带浏览器下载成功 , 但无法打开已下载的APK文件自动安装的问题,特别是三星系列的手机普遍存在这种问题,google后发现也有朋友遇到类似的问题: http://bbs.csdn.net/topics/390262400 引:      写了一些 android 的应用放在网站上让人下载,在某些机型上,三星的 android 的 4.0 

解决部分android手机自带浏览器下载 apk 文件的时候提示无法识别该类型的文件

android 有些较为早期的手机自带的浏览器可能会出现无法识别 apk 类型的文件,因此在文件服务器端需要做以下的调整: 解决一: 在IIS服务器上,MIME类型中添加一个: 文件扩展名: .apk MIME类型: application/vnd.android.package-archive 解决二: 服务端部署在tomcat下,已经在tomcat的web.xml里面配置了mini type <mime-mapping> <extension>apk</extension

Android 手机上获取物理唯一标识码

唯一标识码这东西在网络应用中非常有用,例如检测是否重复注册之类的. import android.provider.Settings.Secure;private String android_id = Secure.getString(getContext().getContentResolver(), Secure.ANDROID_ID); 我们在项目过程中或多或少会使用到设备的唯一识别码,我们希望能够得到一个稳定.可靠的设备唯一识别码.今天我们将介绍几种方式. 1. DEVICE_ID 假

android 手机设备唯一标识

唯一标识码这东西在网络应用中非常有用,例如检测是否重复注册之类的. [java] view plaincopy import android.provider.Settings.Secure; private String android_id = Secure.getString(getContext().getContentResolver(), Secure.ANDROID_ID); 我们在项目过程中或多或少会使用到设备的唯一识别码,我们希望能够得到一个稳定.可靠的设备唯一识别码.今天我们