关于IMEI、MEID、IMSI

简介

IMEI、MEID都是用于标识一台物理设备的ID信息。在Android 8.0以下系统提供的API中,会根据不同条件返回二者之一的信息。

  • IMEI: 国际移动设备识别码,是区别移动设备的标志,一般用于标识某一台独立的设备,双卡双待的手机有两个IMEI号。
    格式:15位十进制数
  • MEID: 同样也是移动设备标识码,但一般用于CDMA制式的设备上,是ESN码的升级版,只有一个MEID
    格式:14位十六进制数

API

1、SDK26开始,TelephonyManager提供了两个独立的API以获取IMEI和MEID: getImei 、 getMeid 。两个API都可传入下标号获取多个设备号信息,getImei(0)获取卡一的IMEI,getImei(1)获取卡二的IMEI,和SIM卡放在什么位置没有关系,和是哪个运营商的也没有关系,没有SIM卡也可以获取IMEI,getImei()方法获取的IMEI就是卡一的IMEI,卡槽的IMEI是固定的,验证机型小米5S,华为P30,华为Mate10,电信移动卡

/*** Returns the IMEI (International Mobile Equipment Identity). Return null if IMEI is not* available.** <p>Requires Permission: {@link android.Manifest.permission#READ_PHONE_STATE READ_PHONE_STATE}* or that the calling app has carrier privileges (see {@link #hasCarrierPrivileges}).** @param slotIndex of which IMEI is returned*/@SuppressAutoDoc // Blocked by b/72967236 - no support for carrier privileges@RequiresPermission(android.Manifest.permission.READ_PHONE_STATE)public String getImei(int slotIndex) {ITelephony telephony = getITelephony();if (telephony == null) return null;try {return telephony.getImeiForSlot(slotIndex, getOpPackageName());} catch (RemoteException ex) {return null;} catch (NullPointerException ex) {return null;}}

2、SDK26以下的系统获取IMEI或MEID的API为TelephonyManager.getDeviceId(),若当前设备有MEID号,则优先返回MEID,否则返回IMEI号。则获取到的设备ID需要通过长度判断才能知晓该ID为IMEI还是MEID,会存在IMEI获取不到,只能获取MEID的情况。 比如用户插移动联通的卡,返回imei1,imei2,插电信的卡就变成返回imei1,meid了 (PS:这个我没有验证网上博客有人这么写)

SDK26以下:谷歌官方把getImei这个获取IMEI的单独API隐藏起来了,不知道为啥,,如果要调用可以利用反射

/*** Returns the IMEI. Return null if IMEI is not available.** <p>Requires Permission:*   {@link android.Manifest.permission#READ_PHONE_STATE READ_PHONE_STATE}** @param slotId of which deviceID is returned*//** {@hide} */  SDK26以下的版本加了个隐藏的注解!!public String getImei(int slotId) {ITelephony telephony = getITelephony();if (telephony == null) return null;try {return telephony.getImeiForSlot(slotId, getOpPackageName());} catch (RemoteException ex) {return null;} catch (NullPointerException ex) {return null;}}

我们公版项目里只用了getDeviceId这个过时的方法来获取IMEI,照理是会存在问题,但是如果只是作为唯一标识的话,获取到的是IMEI还是MEID没差。。。我们只获取IMEI,不获取MEID

 /*** Returns the unique device ID of a subscription, for example, the IMEI for* GSM and the MEID for CDMA phones. Return null if device ID is not available.** <p>Requires Permission: {@link android.Manifest.permission#READ_PHONE_STATE READ_PHONE_STATE}* or that the calling app has carrier privileges (see {@link #hasCarrierPrivileges}).** @param slotIndex of which deviceID is returned** @deprecated Use (@link getImei} which returns IMEI for GSM or (@link getMeid} which returns* MEID for CDMA.*/@Deprecated    SDK28 已经把这个方法标成不推荐使用了。。。!!@SuppressAutoDoc // Blocked by b/72967236 - no support for carrier privileges@RequiresPermission(android.Manifest.permission.READ_PHONE_STATE)public String getDeviceId(int slotIndex) {// FIXME this assumes phoneId == slotIndextry {IPhoneSubInfo info = getSubscriberInfo();if (info == null)return null;return info.getDeviceIdForPhone(slotIndex, mContext.getOpPackageName());} catch (RemoteException ex) {return null;} catch (NullPointerException ex) {return null;}}

关于IMSI,和SIM卡绑定,,双卡手机,getSubscriberId方法不传参读的是主卡的IMSI,当主卡断网或者手动把主卡设置成另一张卡时,读的就是另一张卡的IMSI,和卡槽没有关系,只和当前用的是哪张卡有关系,如图,主副卡切换时读取的IMSI变化,IMEI不变化

关于IMEI、MEID、IMSI相关推荐

  1. 关于android各种双卡手机获取imei,imsi的处置(mtk,展讯,高通等)

    2019独角兽企业重金招聘Python工程师标准>>> 关于android各种双卡手机获取imei,imsi的处理(mtk,展讯,高通等) 目前国内对于双卡智能手机的需求还是很大的, ...

  2. 安卓iccid_Android 获取双卡手机IMEI,IMSI,ICCID

    一.首先要添加权限 二.获取主卡的IMEI,IMSI,ICCID /** * Author: liuqiang * Time: 2017-08-14 15:28 * Description: * * ...

  3. IMEI、IMSI、ICCID、SN是什么?意义和区别?通信模组或手机的唯一识别码

    最近在做几个4G移动端的产品,初入行门有很多生涩的名词.想获取一个全球唯一ID作为设备后台管理编号,就扯出了 IMEI.IMSI.ICCID.SN 这几个东西. IMEI IMEI:国际移动设备识别码 ...

  4. 获取双卡手机IMEI、IMSI

    转载请注明出处: 现在 Android 手机越来越多的使用双卡双待,对于安装双卡的手机,有时我们想要获取两张卡的IMSI.IMEI等信息.我们知道 Android 中提供了相关 api,通过类 Tel ...

  5. android+imei+为null,适合Android7.0以上(到9.0)系统,获取 关于手机--状态信息 (如:MAC,IMEI,IMSI,ICCID)...

    这里面也写了获取本机手机号码的代码,但是测试之后发现只有华为nove3 才可以获取到,不过其他一些重要的信息都可以拿到,MAC,IMEI,IMSI,ICCID. 想测试的话,这个是Apk包地址   百 ...

  6. Android 获取手机IMEI 和 IMSI 号

    在做开发时,偶尔会用到 获取手机IMEI 码的操作,这里写了 获取手机IMEI 和 IMSI 的方法,方便需要使用的同学作参考.(- ̄▽ ̄)- 获取手机IMEI: /*** 获取手机IMEI号*/pr ...

  7. Android 获取双卡手机IMEI,IMSI,ICCID

    一.首先要添加权限 <uses-permission android:name="android.permission.READ_PHONE_STATE" /> 二.获 ...

  8. 【IoT】产品研发:如何获取电信平台NB模组IMEI和IMSI号

    电信平台添加设备时需要IMEI和IMSI号,如何获取呢? IMEI:国际移动设备识别码(15位),用来标识模组. AT+CGSN=1 [09:44:09.263]收←◆AT+CGSN=1 +CGSN: ...

  9. 委托站点中的MIP、RMPN、UMPN、IMEI、IMSI、分别代表是什么意思?

    委托站点中的MIP.RMPN.UMPN.IMEI.IMSI.分别代表是什么意思? 最近工作中,有涉及到这几个专有名称,一开始不太明白意思,其中大部分都是从百度百科那里查到的,这里总结一下. MIP M ...

  10. ICCID IMSI IMEI MEID

    IMEI-----与手机相关 俗称:手机的序列号,一般买的手机都有贴着这个东东,或者用暗码查询(*#06#) 学名:国际移动设备识别码 组成:IMEI = TAC+FAC+SNR+SP MEID--- ...

最新文章

  1. R语言基础知识详解及概括
  2. 西安电子科技大学计算机全国排名第几,全国五所电子类高校排名,北京邮电大学排名第三...
  3. 异常处理第三讲,SEH(结构化异常处理),异常展开问题
  4. 删除word菜单栏上的adobe comments的终极办法
  5. vue 给标签添加data属性_vue之data属性
  6. 分析chrome中的network面板
  7. adam算法效果差原因_干货|快来get中央空调冬天制热效果差的十大原因!
  8. iOS 关于UITableView的黑科技
  9. 基于贝叶斯推断的分类模型 机器学习你会遇到的“坑”
  10. 未来金融科技宣布已完成mBTC系统和技术升级,消费者可用比特币进行在线支付
  11. PHP SQL注入攻击与防御
  12. 磨皮三部曲---算法小白篇
  13. 分治法 --- 大整数的乘法
  14. 同一局域网入侵_局域网IP地址冲突、环路?千兆接入交换机选型很重要
  15. 使用grafana为zabbix绘制拓扑
  16. springboot系列(5) -- 整合 logback 彩色日志输
  17. Eric6中使用PYQT5在窗口显示图片
  18. jQuery 中ajax回调函数获得的数据格式问题
  19. uva10635Prince and Princess(LIS)
  20. php中输出%3cbr %3e,抄板软件(彩色)CBR 5.3 CBR 5.3 CBR 5.0

热门文章

  1. 杭州市发布:印发数据中心优化布局建设意见 新建数据中心PUE值不高于1.4
  2. Live800:企业如何选择在线客服系统解决方案?
  3. 首席新媒体运营黎想教程:活动运营推广入门全攻略及进阶
  4. Windows远程桌面(xrdp+vnc)连接Ubu…
  5. java计算机毕业设计中医药科普网站源码+mysql数据库+系统+lw文档+部署
  6. 京东css3动画全屏海报_CSS3+HTML5+JS 实现一个块的收缩与展开动画效果
  7. 微信小程序 JS 遍历对象的属性和值
  8. 【图神经网络】图分类学习研究综述[2]:基于图神经网络的图分类
  9. 居于ERP的普遍失败,再论企业管理与信息化
  10. 微信 android 闪退问题怎么解决方法,微信闪退怎么办 微信多开软件闪退解决方法...