2011-11-04 109 views
1

根据网络,生成唯一ID最推荐的方法是使用Settings.Secure.ANDROID_ID。但是,Settings.Secure.ANDROID_ID在Android 2.2上有一个错误。我正在使用Android 2.2,因此我无法使用它。另一方面,也有wiFi设备的mac地址和TelephonyManager.getDeviceId()。我将生成的ID将用作服务器端的会话ID,因此它必须是唯一的。如何生成一个唯一的ID用作服务器端的会话ID?

如果设备没有无线接口,我可以使用无线网络的MAC地址作为我的唯一ID和手机的设备ID作为回退吗?应用程序需要连接到互联网,因此无线接口或手机deviceId肯定会存在吗?或者这是一个坏主意?

我也在考虑使用UUID.randomUUID()。但即使在这里生成相同的身份证的机会很小,概率依然存在。

如果该ID还必须作为服务器上的会话ID,我可以使用什么ID?此外,请注意,如果服务器上已经存在该ID,则该会话的所有权将被赋予新用户。

回答

2

您可以在服务器上简单地创建一个随机ID(UUID很好)。然后你可以确保它还没有被使用。

+0

谢谢。截至目前,我更倾向于使用UUID。我无法访问服务器,如果我输入类似的ID,则会话的所有权可能会意外转移给新用户。 – Arci

1

我用ANDROID_ID,但我在它前面加随机数,我也得到一个随机数...我检查,如果我在基地了吧,如果不是我用这个数字......

+0

谢谢。但是我没有访问服务器。因此,如果号码已被使用,我不可能返回支票。 – Arci

+1

比我sugest使用足够大的数字在前面和后面的ID,你不会有任何问题(我认为)。 :D – Jovan

1

设备ID是唯一的。得到它有什么不好?

+0

是的,设备ID是唯一的,但它并不适用于所有Android设备。另一件事是必要的许可。如果我是用户,我不想下载需要太多权限的应用程序。另外,我不确定能够访问互联网的Android设备是否始终有Wi-Fi接口或TelephonyManager。 – Arci

+0

嗯,我认为设备ID是IMEI,它存在于每个设备上。 此外,你可以看到这个:http://stackoverflow.com/questions/2785485/is-there-a-unique-android-device-id/2853253#2853253 –

+0

它不存在于每个设备根据http: //android-developers.blogspot.com/2011/03/identifying-app-installations.html。并非所有的Android设备都具有电话硬件。例如,wiFi专用设备没有电话硬件。但是,当然,如果有WiFi,我只能使用WiFi接口的mac地址,因为我只打算使用设备ID作为后备,如果wiFi不可用。所有可以访问互联网的Android设备是否都具有无线接口或电话硬件? – Arci