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设备、处于飞行模式的设备。

android平台获取手机IMSI,IMEI ,序列号,和 手机号的方法相关推荐

  1. android平台获取手机IMSI,IMEI ,序列号,和 手机号的方法

    android平台获取手机IMSI,IMEI ,序列号,和 手机号的方法 1)获取运营商sim卡imsi号: String android_imsi = telephonyManager.getSub ...

  2. 软件获取imei和imsi_android平台获取手机IMSI、IMEI 、序列号和手机号的方法

    Loading... android平台获取手机IMSI,IMEI ,序列号,和 手机号的方法 1)获取运营商sim卡imsi号: String android_imsi = telephonyMan ...

  3. Android中获取手机的IMEI

    IMEI的概念 IMEI(International Mobile Equipment Identity): 是国际移动设备身份码的缩写,国际移动装备辨识码,是由15位数字组成的"电子串号& ...

  4. Android之获取手机IMEI号和IMSI号

    首先我们看一下IMEI号和IMSI号是什么: (1)IMEI(International Mobile Equipment Identity,国际移动身份识别码):是由15位数字组成的"电子 ...

  5. android获取手机IMSI号

    1.什么是imsi号 国际移动用户识别码(IMSI:International Mobile SubscriberIdentification Number)是区别移动用户的标志,储存在SIM卡中,可 ...

  6. Android中获取手机 IMEI Mac地址 IP地址

    一.获取手机IMEI 手机在生产时,每部手机均有一个唯一的标识(ID),国际上采用国际移动设备身份码(IMEI, International Mobile Equipment Identity).IM ...

  7. 基于Android平台的手机安全助手的设计与实现

    1.研究(设计)目的意义及国内外研究状况和应用前景(附参考文献): (一)选题的目的和意义 Android曾经是一家创立于旧金山的公司的名字,该公司于2005年8月份被Google收购,并从此踏上了飞 ...

  8. android开发获取手机,通过ADB获取Android手机信息,获取手机信息

    通过ADB获取Android手机信息,获取手机信息 原文:https://blog.csdn.net/fasfaf454/article/details/51438743 1.获取手机系统信息( CP ...

  9. android获取手机sim卡信息,Android获取手机SIM卡运营商信息的方法

    本文实例讲述了Android获取手机SIM卡运营商信息的方法,对于Android程序设计有非常实用的价值.分享给大家供大家参考之用.具体方法如下: 主要功能代码如下: /** * 获取SIM卡运营商 ...

最新文章

  1. 五条强化 SSH 安全的建议
  2. keras系列︱迁移学习:利用InceptionV3进行fine-tuning及预测、完美案例(五)
  3. mstem函数怎么定义_PYTHON--函数定义
  4. Sql2008的行列转换之行转列
  5. C#(.net)中的一次连接数据库执行多条sql语句
  6. android:windowsoftinputmode=“adjustresize” 无效的解决办法
  7. Hyperledger(超级账本)的worldstate和SAP CRM的CRMD_CUMULAT_H
  8. iOS UI-自动布局(Autoresizing)
  9. androidpn的学习研究(三)androidpn-server服务端几个类说明
  10. android 函数式编程,响应式编程在Android中的应用
  11. 状态方程simulink仿真_推荐几本关于制冷仿真的书籍|压缩机|制冷剂|热泵
  12. 问道法宝升级经验统计
  13. 使用 Mono.Cecil 辅助 Unity3D 手游进行性能测试
  14. 3dMax模型数据转cesium Gltf模型
  15. R | Rstudio安装 |Rstudio空白及显示无法访问此网站
  16. 【牛客】矩阵幂(C++)
  17. 接入广告App 教你如何赚取你的第一桶金 - 2048(含源码)
  18. Ubuntu 20.04使用deepin wine安装Windows官方版QQ、微信、Tim等
  19. python tell方法_Python3 File tell() 方法
  20. 温度补偿计算公式_热力管道补偿器补偿量计算公式

热门文章

  1. Vue - 实现信纸输入写作,类似写明信片时的一张背景图片 + 横格纸效果(信纸格子与文字自动对齐、支持自定义背景图、文字或横线大小与颜色,一切由您 DIY 自定义样式)纯CSS完成支持任何vue项目
  2. nbuoj.1333.明信片与照片
  3. clip和clip-path inset
  4. 开启oracle的acfs,配置OracleACFS集群文件系统
  5. 电子邮件营销中的邮件主题设计
  6. 9 使用AD滴泪与敷铜
  7. 两个自我的对话和博弈
  8. oracle数据库中批量把一张表里面的数据插入到不同的表中的方法
  9. ブリアー / 三星枪
  10. QTDialog去掉右上角问号保留X