【发布时间】:2013-05-27 23:52:46
【问题描述】:
如何在Android中获取手机重置或操作系统更新时无法更改的唯一设备ID?
【问题讨论】:
-
只需尝试加载一个测试添加,加载成功后,您会在logcat中看到您的设备ID。
标签: android
如何在Android中获取手机重置或操作系统更新时无法更改的唯一设备ID?
【问题讨论】:
标签: android
更新:19 -11-2019
以下答案与当今不再相关。
因此,对于任何寻找答案的人,您都应该查看下面链接的文档
https://developer.android.com/training/articles/user-data-ids
旧答案 - 现在不相关。 您在下面的链接中查看此博客
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);
以上来自链接@Is there a unique Android device 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();
http://developer.android.com/reference/android/telephony/TelephonyManager.html#getDeviceId%28%29
添加这是清单
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
【讨论】:
我使用以下代码获取 Android id。
String android_id = Secure.getString(this.getContentResolver(),
Secure.ANDROID_ID);
Log.d("Android","Android ID : "+android_id);
【讨论】:
请阅读谷歌开发者博客上的这篇官方博客文章: http://android-developers.blogspot.be/2011/03/identifying-app-installations.html
结论 对于绝大多数应用程序,要求是 识别特定的安装,而不是物理设备。 幸运的是,这样做很简单。
有很多很好的理由可以避免尝试识别 特定设备。对于那些想尝试的人来说,最好的方法是 可能在任何相当现代的东西上使用 ANDROID_ID, 旧设备的一些后备启发式方法
.
【讨论】: