如何在Android中获取唯一的设备硬件ID?

Prv*_*rvN 102 android

如何获取Android中的唯一设备ID,在执行手机重置或操作系统更新时无法更改?

Rag*_*dan 164

您可以在下面的链接中查看此博客

http://android-developers.blogspot.in/2011/03/identifying-app-installations.html

ANDROID_ID

import android.provider.Settings.Secure;

private String android_id = Secure.getString(getContext().getContentResolver(),
                                                    Secure.ANDROID_ID); 
Run Code Online (Sandbox Code Playgroud)

以上是来自链接@ 是否有独特的Android设备ID?

更具体地说,Settings.Secure.ANDROID_ID.这是在设备首次启动时生成并存储的64位数量.擦除设备时会重置.

ANDROID_ID似乎是唯一设备标识符的不错选择.有一些缺点:首先,它在2.2之前的Android版本("Froyo")上并非100%可靠.此外,在主要制造商的流行手机中至少有一个被广泛观察到的错误,其中每个实例都具有相同的ANDROID_ID.

下面的解决方案并不是一个好的解决方案,因为设备擦除("工厂重置")的价值仍然存在,因此当您的一个客户擦拭设备并将其传递给另一个人时,您最终可能会犯下一个令人讨厌的错误.

您可以使用以下方法获取设备的imei号码

  TelephonyManager telephonyManager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
  telephonyManager.getDeviceId();
Run Code Online (Sandbox Code Playgroud)

http://developer.android.com/reference/android/telephony/TelephonyManager.html#getDeviceId%28%29

添加这是显而易见的

<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
Run Code Online (Sandbox Code Playgroud)

  • 手机的IMEI在制造之后不应改变.这假设该设备是电话 - 不是一个好的假设. (6认同)
  • 我的评论说这不是相关的答案,他可能已经在网上找到了这个解决方案,或者已经实现了,因为stackoverflow本身已经存在很多线程.但他的问题是"在手机重置或操作系统更新时无法更改的唯一设备ID" (3认同)

Chi*_*hod 25

我使用以下代码来获取Android ID.

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

Log.d("Android","Android ID : "+android_id);
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • 是ANDROID_ID没问题,但根据文档:***这是64位数量,在设备首次启动时生成并存储.擦除设备时会重置.*** (10认同)

Waz*_*_Be 5

请阅读谷歌开发者博客上的官方博客条目:http : //android-developers.blogspot.be/2011/03/identifying-app-installations.html

结论对于绝大多数应用程序,要求是识别特定安装,而不是物理设备。幸运的是,这样做很简单。

避免尝试识别特定设备有很多很好的理由。对于那些想要尝试的人来说,最好的方法可能是在任何相当现代的东西上使用 ANDROID_ID,并为传统设备提供一些后备启发式

.