有人能告诉我我一直在使用的代码是否是获取唯一 ID 的正确方法吗?我怀疑我可能有骗子,这可能会导致我公司的行政级别出现问题......
final TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
String UDID = tm.getDeviceId();
有人能告诉我我一直在使用的代码是否是获取唯一 ID 的正确方法吗?我怀疑我可能有骗子,这可能会导致我公司的行政级别出现问题......
final TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
String UDID = tm.getDeviceId();
这是正确的调用方式getDeviceId()
。这可能不是唯一标识符,因为并非所有设备都是手机,有些手机有错误。有关更多详细信息,请参阅此 Android 开发者博客文章。
如果您想要一个 android 的唯一标识符,那么您会看到大量的问题出现在一个简单的谷歌搜索中。类似于 CommonsWare 提到的。
但是,您仍然可以获得唯一标识符。真正的问题是你想要识别什么。是用户还是设备?
如果要识别特定用户:
你要IMSI值。
final TelephonyManager tm = (TelephonyManager)context`.getSystemService(Context.TELEPHONY_SERVICE);
String UDID = tm.getSubscriberId()
如果要识别硬件,则需要 IMEI 值:
final TelephonyManager tm = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
String UDID = tm.getDeviceId()
现在:我建议使用 getDeviceID() 选项,因为它对隐私的影响较小。
但是您可以进一步采取步骤事件并在存储之前对该值进行哈希处理。
但是,如果您无法获得正确的返回值,您总是可以做一些事情,比如让用户输入他们的电话号码,并通过短信验证它。然后将其用作标识符。