每个设备的Secure.ANDROID_ID是唯一的吗?

我正在使用这个调用:

Secure.getString(getApplicationContext().getContentResolver(), Secure.ANDROID_ID); 

获取设备的UID。 我想我从多个设备获取相同的ID。 这应该是可能的吗?

有问题的ID是:9774d56d682e549c,显然有几个设备返回此ID的问题http://code.google.com/p/android/issues/list?cursor=10603&updated=10603&ts=1295993403

检查到这个线程 。 但是你应该小心,因为它被logging为“可以在工厂重置时更改”。 使用需要您自担风险,而且可以在根植电话上轻松更改。 此外,似乎有些制造商有问题与他们的手机重复数字线程 。 根据你想要做什么,我可能不会使用这个作为一个UID。

所以,如果你想要设备本身的独特的东西, TM.getDeviceId() 应该是足够的。

这是显示如何获取电话pipe理员ID的代码。 你正在使用的Android设备ID可以改变出厂设置,也有一些制造商在给予唯一的ID问题。

 TelephonyManager tm = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE); Log.d("ID", "Android ID: " + Secure.getString(getContentResolver(), Secure.ANDROID_ID)); Log.d("ID", "Device ID : " + tm.getDeviceId()); 

一定要通过使用权限TelephonyManager

 <uses-permission android:name="android.permission.READ_PHONE_STATE" /> 

使用Android O时,ANDROID_ID的行为将会改变。 手机上每个用户的每个应用的ANDROID_ID将会不同。

采取: https : //android-developers.googleblog.com/2017/04/changes-to-device-identifiers-in.html

Android ID

在O中,Android ID(Settings.Secure.ANDROID_ID或SSAID)对于设备上的每个应用程序和每个用户具有不同的值。 需要设备范围标识符的开发人员应改为使用可重置的标识符(如广告ID),从而为用户提供更多的控制。 广告ID还提供了一个面向用户的设置来限制广告跟踪。

另外在Android O:

  • 只要包名和签名密钥相同,ANDROID_ID值在包卸载/重新安装时不会更改。 应用程序可以依靠此值在重新安装时保持状态。
  • 如果应用程序安装在运行早期版本的Android的设备上,则在设备更新到Android O时,Android ID将保持不变,除非该应用程序已卸载并重新安装。
  • Android ID值仅在设备出厂重置或签名密钥在卸载和重置之间旋转时才会更改
    重新安装事件。
  • 只有使用Google Play服务和广告ID的设备制造商才需要进行此更改。 其他设备制造商可以提供替代的可重置ID或继续提供ANDROID ID。

我已经读了一些关于这个的东西,不幸的是不应该依靠ANDROID_ID来唯一标识一个单独的设备。

它似乎没有在Android的合规性要求强制执行,所以制造商似乎实施它的方式,他们select包括一些更多地使用它作为一个“模型”ID等。

此外,请注意,即使制造商已经编写了一个生成器以使其成为UUID(例如),但不能保证在出厂重置之后仍能正常运行。

只需在此列出一个备用解决scheme,广告ID:

https://support.google.com/googleplay/android-developer/answer/6048248?hl=en

从上面的链接复制:

广告ID是由Google Play服务提供的用于广告的唯一的,用户可重置的ID。 它为用户提供了更好的控制,并为开发人员提供了一个简单,标准的系统,以继续通过应用程序获利。 它使用户能够重置其标识符或在Google Play应用程序中停用个性化广告(以前称为基于兴趣的广告)。

限制是:

  1. 仅限Google Play启用的设备。
  2. 隐私权政策: https://support.google.com/googleplay/android-developer/answer/113469?hl=en&rd=1#privacyhttps://support.google.com/googleplay/android-developer/answer/113469?hl=en&rd=1#privacy privacy