如何为每部Android手机生成一个唯一的ID
1个回答
2016-12-26 · 知道合伙人软件行家
关注
展开全部
这种方法是,以一些特定的信息为基础,生成设备的唯一标识。
首先,算法角度,常用的有UUID、摘要两种。这两种算法都是以特定的数据为基础,生成一个唯一的、固定长度的字符串。这里选择UUID。
其次,计算的基础数据,建议选择divice_id和android_id。原因是,1)这两个标识虽然不能抵抗wipe操作,但受用户的行为影响比较小;2)如果正常获取,都是唯一的;③如果不能正常获取,结果也是固定的,不会频繁变化。
再次,优先级的考虑。从这两个标识的缺点考虑。
1)device_id。
①不能标识非手机设备,例如Pad。
②权限问题,因为用户的反感。
③获取异常,厂商定制系统中存在的bug,致使返回结果为空,或者为一串“0”或“*”。
④对于双卡双待手机,会返回两个device_id。
2)android_id。
①Android2.3以前,系统Bug,导致不同的设备产生相同的结果:9774d56d682e549c。
②有些可能返回null。
③设备差异:对于CDMA设备,与device_id返回相同的值。
综合考虑,device_id不能标识某些pad,以及用户的权限问题,是我们不能接受的,所以优先使用android_id。对于android_id返回为null的情况,再考虑使用device_id。
最后,当android_id和device_id都返回异常的情况,我们可以随机生成一个UUID。
首先,算法角度,常用的有UUID、摘要两种。这两种算法都是以特定的数据为基础,生成一个唯一的、固定长度的字符串。这里选择UUID。
其次,计算的基础数据,建议选择divice_id和android_id。原因是,1)这两个标识虽然不能抵抗wipe操作,但受用户的行为影响比较小;2)如果正常获取,都是唯一的;③如果不能正常获取,结果也是固定的,不会频繁变化。
再次,优先级的考虑。从这两个标识的缺点考虑。
1)device_id。
①不能标识非手机设备,例如Pad。
②权限问题,因为用户的反感。
③获取异常,厂商定制系统中存在的bug,致使返回结果为空,或者为一串“0”或“*”。
④对于双卡双待手机,会返回两个device_id。
2)android_id。
①Android2.3以前,系统Bug,导致不同的设备产生相同的结果:9774d56d682e549c。
②有些可能返回null。
③设备差异:对于CDMA设备,与device_id返回相同的值。
综合考虑,device_id不能标识某些pad,以及用户的权限问题,是我们不能接受的,所以优先使用android_id。对于android_id返回为null的情况,再考虑使用device_id。
最后,当android_id和device_id都返回异常的情况,我们可以随机生成一个UUID。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询