如何检索Android设备的唯一ID

 我来答
huanglenzhi
推荐于2016-02-25 · 知道合伙人数码行家
huanglenzhi
知道合伙人数码行家
采纳数:117538 获赞数:517193
长期从事计算机组装,维护,网络组建及管理。对计算机硬件、操作系统安装、典型网络设备具有详细认知。

向TA提问 私信TA
展开全部
  Android的开发者在一些特定情况下都需要知道手机中的唯一设备ID。例如,跟踪应用程序的安装,生成用于复制保护的DRM时需要使用设备的唯一ID。
  范围

  本文提供有关如何读取各种Android设备的 ID的介绍,用以使用标识号。本文假定用户已经安装了Android以及开发应用程序必要的工具。并且,本文假定用户已了解Android的基本知识。

  简介在搭载Android操作系统的设备中,已经存在好几种类型的设备标识号。先前的所有Android设备都具有电话功能,因此查找每部设备硬件唯一的IMEI,MEID,或ESN也很容易。但仅能使用Wifi的设备或音乐播放器没有电话硬件,所以没有这种类型的唯一标识号。本文阐述了如何读取不同Android设备的标识号。检索Android设备ID各种方式

  以下是Android设备不同类型的识别设备ID。

  · 唯一编号(IMEI,MEID,ESN,IMSI)

  · MAC地址

  · 序列号

  · ANDROID_ID

  唯一编号(IMEI,MEID,ESN,IMSI)

  说明在以前,当Android设备均作为电话使用时,寻找唯一标识号比较简单:()可用于找到(取决于网络技术)手机硬件唯一的IMEI,MEID,ESN和IMSI编号。

  TelephonyManager.getDeviceId

  IMEI,MEID,ESN,IMSI的定义如下:

  •IMEI(国际移动设备识别码)唯一编号,用于识别 GSM,WCDMA手机以及一些卫星电话(移动设备识别码)全球唯一编号,用于识别CDMA移动电台设备的物理硬件,MEID出现的目的是取代ESN号段(电子序列号)(电子序列号)唯一编号,用于识别CDMA手机(国际移动用户识别码)与所有GSM和UMTS网络手机用户相关联的唯一识别编号如需要检索设备的ID,在项目中要使用以下代码:

  •MEID

  •ESN

  •IMSI

  import android.telephony.TelephonyManager;

  import android.content.Context;

  String imeistring = null;

  String imsistring = null;

  {

  TelephonyManager telephonyManager;

  telephonyManager =

  ( TelephonyManager )getSystemService( Context.TELEPHONY_SERVICE );

  /*

  * getDeviceId() function Returns the unique device ID.

  * for example,the IMEI for GSM and the MEID or ESN for CDMA phones.

  */

  imeistring = telephonyManager.getDeviceId();

  /*

  * getSubscriberId() function Returns the unique subscriber ID,

  * for example, the IMSI for a GSM phone.

  */

  imsistring = telephonyManager.getSubscriberId();

  }

  如要只读取手机的状态,则需添加READ_PHONE_STATE许可到AndroidManifest.xml文件中。

  <uses-permission

  android:name="android.permission.READ_PHONE_STATE" >

  </uses-permission>

  缺点

  •Android设备要具有电话功能

  •其工作不是很可靠

  •序列号

  •当其工作时,该值保留了设备的重置信息(“恢复出厂设置”),从而可以消除当客户删除自己设备上的信息,并把设备转另一个人时发生的错误。

  Mac地址

  说明

  可通过检索找到设备的Wi - Fi或蓝牙硬件的Mac地址。但是,不推荐使用Mac地址作为唯一的标识号。

  缺点设备要具备Wi – Fi功能(并非所有的设备都有Wi – Fi功能)如果设备目前正在使用Wi - Fi,则不能报告Mac地址

  序列号

  从Android 2.3(“姜饼”)开始,通过android.os.Build.SERIAL方法序列号可被使用。没有电话功能的设备也都需要上给出唯一的设备ID; 某些手机也可以需要这样做。序列号可以用于识别MID(移动互联网设备)或PMP(便携式媒体播放器),这两种设备都没有电话功能。通过读取系统属性值“ro.serialno”的方法,可以使用序列号作为设备ID 。如检索序列号并作为设备ID使用,请参考下面的代码示例。

  import java.lang.reflect.Method;

  String serialnum = null;

  try {

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

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

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

  }

  catch (Exception ignored)

  {

  }

  缺点

  序列号无法在所有Android设备上使用。

  ANDROID_ID

  说明

  更具体地说,Settings.Secure.ANDROID_ID 是一串64位的编码(十六进制的字符串),是随机生成的设备的第一个引导,其记录着一个固定值,通过它可以知道设备的寿命(在设备恢复出厂设置后,该值可能会改变)。 ANDROID_ID也可视为作为唯一设备标识号的一个好选择。如要检索用于设备ID 的ANDROID_ID,请参阅下面的示例代码

  String androidId = Settings.Secure.getString(getContentResolver(),Settings.Secure.ANDROID_ID);

  缺点

  • 对于Android 2.2(“Froyo”)之前的设备不是100%的可靠

  • 此外,在主流制造商的畅销手机中至少存在一个众所周知的错误,每一个实例都具有相同的ANDROID_ID。

  结论

  对于绝大多数应用来说,只需识别特定的安装配置,而不需要识别物理设备。所幸是,这样做就省去了麻烦。

  下面是部分使用设备ID的最佳途径:

  •支持各种设备类型的另一种方法是使用getDeviceID()API和ro.serialno的组合

  •有许多值得参考的原因,来提醒开发者避免试图识别特定的设备。对于那些想做一下这方面尝试的用户, 最好的办法可能是使用ANDROID_ID,并在一些传统设备上做尝试。

  转载
Storm代理
2023-07-25 广告
StormProxies是全球大数据IP资源服务商,其住宅代理网络由真实的家庭住宅IP组成,可为企业或个人提供满足各种场景的代理产品。点击免费测试(注册即送1G流量)StormProxies有哪些优势?1、IP+端口提取形式,不限带宽,IP... 点击进入详情页
本回答由Storm代理提供
ynjczx2
推荐于2017-09-14 · TA获得超过4041个赞
知道大有可为答主
回答量:2726
采纳率:65%
帮助的人:1473万
展开全部

  方法步骤(以安卓5.0为例)

 

  一、依次点击 设定---关于设备---状态。

 

 

  二、现在可以看到安卓设备的IMEI(国际移动设备识别码)唯一编号。

  三、或者用手机的拨号键盘输入*#06# 可以弹出IMEI

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式