【问题标题】:Settings.Secure.ANDROID_ID is not unique, how to solve?Settings.Secure.ANDROID_ID 不唯一,如何解决?
【发布时间】:2013-02-15 09:36:00
【问题描述】:

我现在面临一个大问题。如在Android官方参考中找到的: http://developer.android.com/reference/android/provider/Settings.Secure.html#ANDROID_ID


public static final String ANDROID_ID

*在 API 级别 3 中添加

在设备首次启动时随机生成的 64 位数字(作为十六进制字符串),在设备的生命周期内应保持不变。 (如果在设备上执行恢复出厂设置,该值可能会发生变化。) 常量值:“android_id”*


但是销售了超过 500 台平板电脑 (A10 AllWinner) ANDROID_ID 并不是真正随机生成的,我看到(从我的网络服务日志中)几个设备具有相同的编号

为什么?

我该如何解决这个问题?如何生成唯一 ID?假设所有设备的序列号始终相同 (Same serial number on several android devices. Adb is useless. How can I change the serial number?),并且 MAC 地址不能始终可用。

【问题讨论】:

  • 你用这个号码做什么需要唯一性?
  • 我的应用程序使用 C# Web 服务来获取更新、发送数据...因此,在 Web 服务中,我想识别我销售的每一台平板电脑。如果两台或多台平板电脑的识别号相同,那就是个大问题了!
  • 另外值得注意的是,如果您的用户重置为出厂默认设置,Android ID 也会被重置。

标签: android security


【解决方案1】:

一般来说,这是 Android 的一个严重问题 - 似乎 Android ID 是最佳选择,但您注意到几个重要的供应商已经把实现弄得一团糟。

面对类似的要求,我使用了这些值的哈希:

  • 电话号码/SIM 卡号码(如果可用或仅使用零)
  • Android ID
  • Mac 地址(如果可用或仅使用零)

根据我有限的经验(使用了数百台设备),这种组合足以实现您所需的独特性。

2017 年更新 从 Android 6 开始,出于安全原因,Mac 地址返回一个常量值 - 但是在几乎所有较新的 android 实现中,android ID 似乎都是可靠的唯一的,因此除非您针对的是旧版本,否则您没有使用此技术的动机。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2021-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-08
相关资源
最近更新 更多