我正在尝试为Android手机和平板电脑生成唯一的ID。我发现了一个有趣的功能,但是使用我全新的银河标签2却无法正常工作。这是我的功能:
public String generateId(TelephonyManager tm, ContentResolver resolver) {
final String tmDevice, tmSerial, androidId;
tmDevice = "" + tm.getDeviceId();
tmSerial = "" + tm.getSimSerialNumber();
androidId = "" + Secure.getString(resolver, Secure.ANDROID_ID);
UUID deviceUuid = new UUID(androidId.hashCode(), ((long)tmDevice.hashCode() << 32) | tmSerial.hashCode());
return deviceUuid.toString();
}
最佳答案
我只是使用手机的毫秒级时间戳,将其转换为字符串,并附加一个介于0到10000之间的随机数的十六进制表示(并在应用首次运行时生成并存储在共享的Prefs中)。
例如:1342603520897_1bf
如果您希望每毫秒安装数千次,则将无法使用。如果没有,那很好。
该解决方案的缺点是,它不会在安装过程中持续存在,但会为您提供一个匿名ID(可能是一个加号)。