首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Android和Java Uuid

Android和Java Uuid
EN

Stack Overflow用户
提问于 2012-12-19 13:03:55
回答 2查看 4.9K关注 0票数 2

我想为我的应用程序生成一个uuid,我尝试了很多东西,比如wifi mac地址,获取android,序列号,从设备android.os.Build属性创建伪uuid。

我还了解到java本身拥有Uuid创建者类java.util.UUID

通过阅读几篇文章和博客,我对此感到有点困惑。我想知道,如果两个android设备使用这个java类(java.util.UUID)创建uuid,这是唯一的还是有可能重复?

另外,在一些设备中,我无法使用android.os.Build.SERIAL找到序列号。是否有其他方法可以获取设备序列号

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-12-19 13:26:26

假设您使用的是java.util.UUID的randomUUID()函数,理论上存在复制的可能性,但它非常遥远。所生成的ids是RFC4122版本4 ids,其具有随机设置的122位。这意味着有5.32x10^^36个可能的值。从某种角度来看,如果你有10亿台设备,每台设备每秒产生10亿个if,它们大约需要1680亿年才能完成(大约是宇宙年龄的10倍)。

所以,是的,复制是可能的,但是(假设Java正在使用一个高质量的随机数生成器),它实际发生的可能性是如此之小,以至于没有意义。

票数 8
EN

Stack Overflow用户

发布于 2012-12-19 13:20:48

要获取设备ID,请使用Telephoney,您可以在这里使用它

代码语言:javascript
运行
复制
public static String deviceUDID(Context ctx) {
     final TelephonyManager tm = (TelephonyManager) ctx.getSystemService(Context.TELEPHONY_SERVICE);

     final String tmDevice, tmSerial, androidId;
     tmDevice = "" + tm.getDeviceId();
     tmSerial = "" + tm.getSimSerialNumber();
     androidId = "" +android.provider.Settings.Secure.getString(ctx.getContentResolver(), android.provider.Settings.Secure.ANDROID_ID);

     UUID deviceUuid = new UUID(androidId.hashCode(), ((long)tmDevice.hashCode() << 32) | tmSerial.hashCode());
     String deviceId = deviceUuid.toString();
     Log.d("Device Id", deviceId);
     return deviceId;
} 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13945849

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档