关于IMEI、MEID、IMSI

article/2025/9/20 11:32:58

关于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不变化


http://chatgpt.dhexx.cn/article/wVuf15MK.shtml

相关文章

2022最新手机设备标识码(IMEI、MEID、UDID、UUID、ANDROID_ID、GAID、IDFA等)教程

Android篇 1 IMEI和MEID (1) IMEI (International Mobile Equipment Identity) 是国际移动设备身份码的缩写&#xff0c;国际移动装备辨识码&#xff0c;只有Android手机才获取的到&#xff0c;是由15位数字组成的"电子串号"&#xff0c;比如像这样 35988103031435…

安卓唯一标识:IMEI,MEID,MAC地址,Android_id,UUID,OAID

目录 IMEI&#xff1a; MEID&#xff1a; MAC地址&#xff1a; Android_id&#xff1a; UUID&#xff1a; OAID&#xff1a; 安卓设备的唯一标识&#xff0c;获取的目的在于数据统计&#xff0c;广告归因分析等用途。常用作唯一标识的有IMEI&#xff0c;MEID&#xff0c;…

QA:MEID号申请、什么是MEID号、怎么申请MEID号、MEID号获取

本文671个字&#xff0c;正常大约需要阅读两分钟&#xff0c;完整阅读更精彩&#xff0c;欢迎点赞、转发或留言&#xff01; Q&#xff1a;什么是MEID号&#xff1f; A&#xff1a; MEID 移动设备识别码(Mobile Equipment Identifier)是CDMA手机的身份识别码&#xff0c;也是…

什么是MEID号如何申请MEID,A0、A1、A2以及99开头的MEID号的区别?

MEID/ESN号段ESN Manufacturer’s (MFR) Codes (ESN 厂家代码段) 主要适用于CDMA类的产品Mobile Equipment IDentifier&#xff08;MEID&#xff09;是全球唯一的56bit移动终端标识号需要向美国申请。标识号会被输入终端里&#xff0c;无法修改。可用来对移动式设备进行身份识别…

如何深入理解 StatsD 与 Graphite ?

众所周知&#xff0c;StatsD 负责收集并聚合测量值。之后&#xff0c;它会将数据传给 Graphite&#xff0c;后者以时间序列为依据存储数据&#xff0c;并绘制图表。但是&#xff0c;我们不知道&#xff0c;基于 http 访问的图表在展示时&#xff0c;是基于每秒钟的请求数&#…

graphite 监控 简介

graphite是一个监控业务数据的监控系统。&#xff0c;该系统架构如下&#xff1a; 系统分为三大组件&#xff1a; carbon&#xff1a; 负责后端数据采集,可以通过以下客户端来采集数据 客户端应用有多个方式来发布度量值&#xff1a; 使用一个纯文本协议工具比如 netcat (n…

graphite在centos7上的部署搭建

Graphite安装笔记 实验环境&#xff1a; CentOS7.5 x64 部署python的程序推荐使用virtualenv这列的虚拟环境来进行&#xff0c;防止污染系统自带的python包。 安装一些必要的rpm包 yum install cairo -- 另外的2个包 cairo-devel pycairo 可以不用安装 安装virtualenv yum ins…

Graphite Simulator模拟器详解

Graphite模拟器 Graphite Simulator是由MIT的Carbon研究组开发的一款并行分布式全系统模拟器。设计目标是针对与未来的多核甚至千核&#xff0c;提供高性能的设计和软件开发平台。使用了直接执行、无缝多核和多机分布、可分析性建模、松散同步等技术来提高模拟性能。提供了功能…

业务监控系统如何做,一起来看看如何使用Statsd+Graphite+Grafana搭建业务监控系统

背景介绍 希望能够对业务指标监控&#xff0c;通过业务指标监控反应业务系统的稳定性&#xff0c;原因是通过对基础资源&#xff0c;应用服务状态&#xff0c;性能监控&#xff0c;不能够反应业务系统的稳定性&#xff0c;举个栗子&#xff1a;服务程序一切正常&#xff0c;下…

Spark 应用监控告警-Graphite_exporter

Spark 应用监控告警-Graphite_exporter Spark监控和工具 Web界面事后查看REST API度量高级工具一、下载graphite_exporter 1.1 修改graphite_exporter_mapping1.2 启动graphite_exporter二、Spark配置Graphite metrics三、启动Spark程序四、配置Prometheus 4.1 查看Prometheus…

Graphite系统监控

转载至 : http://my.oschina.net/fufangchun/blog/232895?p1 目录[-] 一、简介&#xff1a; 二、Graphite的安装及配置 0.Graphite目录 1.安装环境 2.所需软件 3.安装依赖 4.安装Graphite组件 ①.检查依赖&#xff1a; ②.安装graphite-web&#xff1a; ②.安装whisper&#x…

【大数据监控】Prometheus、Node_exporter、Graphite_exporter安装部署详细文档

目录 Prometheus简介下载软件包安装部署创建用户创建Systemd服务修改配置文件prometheus.yml启动Prometheus node exporter下载软件包安装部署创建systemd服务启动node_exporter graphite_exporter下载软件包安装部署创建systemd服务启动 graphite_exporter Prometheus 简介 P…

docker部署grafana graphite stastd实时监控告警配置_亲测成功

docker部署grafana graphite stastd实时监控告警配置_亲测成功 实时监控请求的次数和响应时间及异常报警 项目中需要监控API接口的调用情况,如:调用次数,每次调用耗时,调用高峰期,异常报警等 grafana graphite stastd这一套对代码没有侵入,也不会影响接口性能 安装docker环…

graphite安装笔记

0.Graphite目录 Graphite安装之后&#xff0c;在安装位置(默认为/opt/graphite)的文件布局如下&#xff1a; 目录介绍/opt/graphite/bin二进制文件目录/opt/graphite/conf配置文件目录/opt/graphite/lib库目录/opt/graphite/storage数据存放目录&#xff0c;包括log&#xff0c…

graphite 数据库_大数据存储和分析-IBM DB2和Graphite

在本文中,我们将结合IBM™Persistence API使用IBM DB2作为数据源,描述PCC系统中的数据存储。 此外,我们讨论了如何使用Graphite来检测代码库和工作负载。 最后,我们描述了用于分析数据的工具。 成绩单 IBM DB2和Java Persistence API DB2是IBM关系数据库服务器,已在整个…

graphite安装(一键搞定版)

一、python部分&#xff1a; 0、系统&#xff1a; $ cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core) 1、检查系统python是否2.7以上&#xff08;最新graphite需要python至少2.7&#xff09;&#xff1a; $ python -V Python 2.7.5 2、安装pip&#xff1a;…

graphite http api

Render API Graphite web 提供了/render API用来生成图片和获取原始数据。这个API通过查询字符串支持各种参数。参数之间通过&进行分割&#xff0c;如下所示&#xff1a; &namevalue 你可以通过访问 http://GRAPHITE_HOST:GRAPHITE_PORT/render 这个url来确认这个A…

sitespeed+graphite+grafana

最近在看性能UI performance testing 的工具 其中一个是 sitespeed。 sitespeed.io 是 一款可监视和衡量网站前端性能的开源工具。 1. 开 源 2 . 支持事务模 拟 3 . 自动性能分析&#xff0c;形成可视化报 告 4 . 提供的 docker 镜像已搭建完成监控系统&#xff0c;满足…

在Ubuntu18.04使用Docker安装graphite

安装docker apt install docker.io 参照graphite官网&#xff0c;运行docker docker run -d \--name graphite \--restartalways \-p 80:80 \-p 2003-2004:2003-2004 \-p 2023-2024:2023-2024 \-p 8125:8125/udp \-p 8126:8126 \graphiteapp/graphite-statsd 查看docker&am…

graphite

Graphite 是一个用于采集网站实时信息并进行统计的开源项目&#xff0c;可用于采集多种网站服务运行状态信息。Graphite服务平均每分钟有4800次更新操作。实践已经 证实要监测网站发发生什么是非常有用的&#xff0c;它的简单文本协议和绘图功能可以方便地即插即 用的方式用于任…