我正在尝试为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(可能是一个加号)。

09-25 16:09