有人能告诉我,我一直在使用的代码是否是获取唯一ID的正确方法?我怀疑我可能有欺骗行为,这可能会导致我公司的行政级别出现问题......
final TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
String UDID = tm.getDeviceId();
答案 0 :(得分:4)
这是拨打getDeviceId()
的正确方法。这可能不是唯一的标识符,因为并非所有设备都是电话,而某些电话有错误。有关详细信息,请参阅this Android Developers Blog post。
答案 1 :(得分:0)
如果你想为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()选项,因为它具有较少的隐私含义。
但是你可以进一步采取步骤事件并在存储它之前散列该值。
但是,如果您无法获得正确的返回值,您可以随时执行某些操作,例如让用户输入他们的电话号码,并通过短信进行验证。然后将其用作标识符。