【问题标题】:Android : Unique Id for android device to identify the unique deviceAndroid : 用于识别唯一设备的 Android 设备的唯一 ID
【发布时间】:2016-08-26 21:28:21
【问题描述】:

我需要一个不会因 android 设备而改变的 ID,它应该在任何时候都是唯一的,即使 WIFI、SIM、蓝牙不存在以及用户重置他/她的手机或使用新操作系统刷机时也是如此。

我知道这些 ID。 IMEI : 并非所有设备都可用(例如无 SIM 卡的设备)。

MAC : 并非适用于所有设备(例如,无 WIFI 设备)。

Android ID :当用户重置他/她的手机或设备是新操作系统的根时,它发生了变化。

哪个更符合我的要求?

我应该使用序列号吗? Build.SERIAL??

【问题讨论】:

  • 如果这与服务器有关,它可能是一封电子邮件,或者是一个生成的 ID,它将被发送到服务器并且它是唯一的
  • 是的,它与服务器有关。但我需要唯一的设备 ID 来识别设备而不是用户。
  • 为什么在无法连接到互联网的设备上需要一个唯一 ID?
  • 偶然发现了这个。可能重复。 stackoverflow.com/questions/2785485/…
  • @Abbas 我需要识别设备。即使用户重新安装应用程序或他在同一设备上安装具有新电子邮件 ID 的应用程序。我必须识别设备而不是用户。

标签: android


【解决方案1】:

您可以使用制造商信息、设备名称和序列号的组合。这应该是唯一的并且在所有设备上都可用:

StringBuilder sb = new StringBuilder();

sb.append(android.os.Build.MANUFACTURER);
sb.append(" ");
sb.append(android.os.Build.MODEL);
sb.append(" ");
sb.append(android.os.Build.SERIAL);

String unique = sb.toString();

【讨论】:

  • 是的,我可以这样做,但是,这是识别设备唯一 ID 的好方法吗?
  • 如果我不认为这是个好主意,我就不会这样回答......
  • 序列号在同一制造商的所有同名设备中是唯一的,这就是为什么您需要将这三个设备结合起来以获得唯一的ID
  • 这意味着不同型号和制造商的序列号可能相同
  • 一般来说是可以的,是的,因为没有针对所有制造商的通用 id 池
【解决方案2】:

请查看以下来自 android 开发者博客的链接。 http://android-developers.blogspot.in/2011/03/identifying-app-installations.html

复制链接中的具体细节以回答您的问题。

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

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

如果您的要求是唯一标识每个用户,为每个用户生成 UUID 并将其存储在服务器上就可以了。但如果你真的想获得物理设备唯一标识符,ANDORID_ID 看起来是唯一可能的方法。

话虽如此,请注意这个错误(以及同一设备上不同配置文件的 android_id 有何不同)。

http://code.google.com/p/android/issues/detail?id=42523

希望这会有所帮助。

【讨论】:

  • 我的要求是识别物理设备而不是用户。
  • 那不是ANDORID_ID。这直接来自 android 开发者博客。 !!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多