1)获取运营商sim卡imsi号,

String IMSI =android.os.SystemProperties.get(

android.telephony.TelephonyProperties.PROPERTY_IMSI);

2)获取IME标识两种方法(手机唯一的标识)

String imei =((TelephonyManager) context.getSystemService(TELEPHONY_SERVICE)).getDeviceId();

String IMEI =android.os.SystemProperties.get(android.telephony.TelephonyProperties.PROPERTY_IMEI)

不过纯APP开发SystemProperties,TelephonyProperties汇报错误,因为android.os.SystemProperties在SDK的库中是没有的,需要把Android SDK 目录下data下的layoutlib.jar文件加到当前工程的附加库路径中,就可以Import。

如果Android Pad没有IMEI,用此方法获取设备ANDROID_ID:

String android_id = Secure.getString(this.getContentResolver(),Secure.ANDROID_ID);

2. 获取手机号

TelephonyManager tm=(TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);

String number = tm.getLine1Number();

如下使用例子:

public static String getIMEI() {

return ((TelephonyManager)AppXiKang.getApp().getSystemService(

Context.TELEPHONY_SERVICE)).getDeviceId();

}

public static String getAndroidId() {

return android.provider.Settings.Secure.getString(

AppXiKang.getApp().getContentResolver(),

android.provider.Settings.Secure.ANDROID_ID);

}

public static String getSimSerialNumber() {

return ((TelephonyManager)AppXiKang.getApp().getSystemService(

Context.TELEPHONY_SERVICE)).getSimSerialNumber();

}

public static String getSerialNumber1() {

returnandroid.os.Build.SERIAL;

}

/**

* getSerialNumber

* @return result is same to getSerialNumber1()

*/

public static String getSerialNumber(){

String serial = null;

try {

Class<?> c =Class.forName("android.os.SystemProperties");

Method get =c.getMethod("get", String.class);

serial = (String)get.invoke(c, "ro.serialno");

} catch (Exception e) {

e.printStackTrace();

}

return serial;

}

public static void displayDevice(){

String dest_imei = getIMEI();

String androidId =getAndroidId();

Log.i(TAG, "isTestDevice:"

+"\nIMEI:"+dest_imei

+" \nANDROID ID:" +androidId

+" \nSerialNumber:"+ getSerialNumber()

+"\nSimSerialNumber:" + getSimSerialNumber()

);

}

运行结果示例:

IMEI:868331011992179

ANDROID ID:5a3b287f2b13bef8

SerialNumber:021YLJ212C001879

SimSerialNumber:898600810110

3. 获取一个能唯一标识每台Android设备的序号与服务器通信

所以如果你想得到设备的唯一序号, TelephonyManager.getDeviceId() 就足够了。但很明显暴露了DeviceID会使一些用户不满,所以最好把这些id加密了。实际上加密后的序号仍然可以唯一的识别该设备,并且不会明显的暴露用户的特定设备,例如,使用 String.hashCode() ,结合UUID:

String getuniqueId(){

TelephonyManager tm = (TelephonyManager) getBaseContext().getSystemService(Context.TELEPHONY_SERVICE);

Stringimei=tm.getDeviceId();

StringsimSerialNumber=tm.getSimSerialNumber();

String androidId =android.provider.Settings.Secure.getString(

getContentResolver(),android.provider.Settings.Secure.ANDROID_ID);

UUID deviceUuid =newUUID(androidId.hashCode(), ((long)imei.hashCode() << 32) |simSerialNumber.hashCode());

String uniqueIuniqueId d= deviceUuid.toString();

returnuniqueId;

}

最后的deviceID可能是这样的结果: 00000000-54b3-e7c7-0000-000046bffd97

得到设备独一无二的标识: 可以用于客户端与服务端通信的唯一标识

根据测试:

·         所有的设备都可以返回一个TelephonyManager.getDeviceId()

·         所有的GSM设备(测试设备都装载有SIM卡) 可以返回一个TelephonyManager.getSimSerialNumber()

·         所有的CDMA 设备对于 getSimSerialNumber() 却返回一个空值!

·         所有添加有谷歌账户的设备可以返回一个 ANDROID_ID

·         所有的CDMA设备对于 ANDROID_ID 和 TelephonyManager.getDeviceId()返回相同的值(只要在设置时添加了谷歌账户)

·         目前尚未测试的:没有SIM卡的GSM设备、没有添加谷歌账户的GSM设备、处于飞行模式的设备。

转自:http://blog.csdn.net/easy_gemini/article/details/8613659

android平台获取手机IMSI,IMEI ,序列号,和 手机号的方法的更多相关文章

  1. Android编程获取手机的IMEI

    手机在生产时,每部手机均有一个唯一的标识(ID),国际上采用国际移动设备身份码(IMEI, International Mobile Equipment Identity).IMEI是由15位数字组成 ...

  2. 017 Android 获取手机SIM卡序列号和读取联系人

    1.获取手机SIM卡序列号 //5.存储sim卡系列号 //5.1获取sim卡系列号 TelephonyManager manager = (TelephonyManager) getSystemSe ...

  3. android 点滴记录 ICCID IMSI IMEI MEID 关系 和 区别,相关参数在什么情况下可以获取...

    1:ICCID:Integrate circuit card identity 集成电路卡识别码(固化在手机SIM卡中) ICCID为IC卡的唯一识别号码,共有20位数字组成,其编码格式为:XXXXX ...

  4. android如何获取手机型号和版本号

    public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView ...

  5. Android中获取手机电量信息

    有些时候我们需要在我们的应用上为用户展示当前手机的电量,这时候我们就需要用到广播了,我们都知道在动态注册广播的时候,我们需要传入一个BroadcastReceiver类对象,还有一个意图过滤器Inte ...

  6. Android之——获取手机安装的应用程序

    转载请注明出处:http://blog.csdn.net/l1028386804/article/details/47114331 前几篇有关Android的博文中.向大家介绍了几个项目中经常使用的有 ...

  7. 【Android】获取手机中已安装apk文件信息(PackageInfo、ResolveInfo)(应用图片、应用名、包名等)

    众所周知,通过PackageManager可以获取手机端已安装的apk文件的信息,具体代码如下 PackageManager packageManager = this.getPackageManag ...

  8. Android编程获取手机型号,本机电话号码,sdk版本号及firmware版本号号(即系统版本号号)

    Android开发平台中,可通过TelephonyManager 获取本机号码. TelephonyManager phoneMgr=(TelephonyManager)this.getSystemS ...

  9. android 如何获取手机的图片、视频、音乐

    在android 开发中,很多时候,我们会需要调用到用户本机的照片.视频或者是音乐让用户选择,来进行我们APP对应的操作. button.setOnClickListener(new OnClickL ...

随机推荐

  1. C#百万数据查询超时问题

    用c#从百万数据中筛选一些信息时,经常会出现程序连接超时的错误,常见的错误很多,例如:Timeout expired. The timeout period elapsed prior to comp ...

  2. ODAC访问oracle时,提示:由于以前的函数求值超时,函数求值被禁用,必须继续执行才能正常返回

    这是因为调试时会自动对Local/Watch等窗口里面(或鼠标停留所在)的变量求值,为了防止用户写的程序错误(比如死循环),系统有一个超时限制,如果某个属性的get中做了很复杂的操作(而不是简单地返回 ...

  3. jenkins+ant+ssh远程部署服务glassfish

    jenkins安装可以参考官网或自己百度,这里不再说明: jenkins版本2.19.2 这里先说一下目的:主要是通过jenkins实现glassfish的部署,源码使用的是svn,编译是使用ant, ...

  4. NOIP2006 金明的预算方案

    1.             金明的预算方案 (budget.pas/c/cpp) [问题描述] 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间.更让他高兴的是,妈 ...

  5. POJ 1113&&HDU 1348

    题意:凸包周长+一个完整的圆周长.因为走一圈,经过拐点时,所形成的扇形的内角和是360度,故一个完整的圆. 模板题,之前写的Graham模板不对,WR了很多发....POJ上的AC代码 #includ ...

  6. HDU2015校赛 The Country List

    今天手感真差..各种读错题意.水题... 就是说,给你几个串.如果长度一样并且相同位置字符相同(不分大小写)的个数大于两个就是不同串. #include<iostream> #includ ...

  7. 50道经典的JAVA编程题(46-50)

    50道经典的JAVA编程题(46-50),最后五道题了,这是一个美妙的过程,编程真的能让我忘掉一切投入其中,感觉很棒.今天下午考完微机原理了,大三上学期就这样度过了,这学期算是解放了,可是感觉我还是没 ...

  8. 题解西电OJ (Problem 1008 - 数星星)

    题目内容: Description “不要问我太阳有多高 我会告诉你我有多真 不要问我星星有几颗 我会告诉你很多很多” 一天Qinz和wudired在天上数星星,由于星星可以排列成一条直线,他们比赛看 ...

  9. CF390-E. Inna and Large Sweet Matrix(区间更新+区间查询)

    题意很好理解,不说了 题解就是每次把值压缩成一维,比如x上,这样就可以求出任意宽度的整个竖条的和. 如这张图,求的是s5-(s1+s3+s7+s9) 因为可以求出一整竖条和一整横条,我们可以求出是s2 ...

  10. Qt QDebug :Cannot retrieve debugging output!

    调试Qt程序时用Qdebug类输出调试信息:     qDebug("read My Com"); 这个问题是个小问题,其实跟程序没关系.当你同时开多个Qt程序(Creator编程 ...