获取安卓设备唯一标识,看着一篇就够了

Posted 安卓公园

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了获取安卓设备唯一标识,看着一篇就够了相关的知识,希望对你有一定的参考价值。



安卓设备的唯一标识的方法并不唯一,也没有哪种方法能够适用于所有的android设备,下面列出几种常见的方式,可以根据需要选择。


1、IMEI码

IMEI(国际移动设备识别码)唯一编号;



用于识别CDMA移动电台设备的物理硬件,MEID出现的目的是取代ESN号段(电子序列号)(电子序列号)唯一编号;


用于识别CDMA手机(国际移动用户识别码)与所有GSM和UMTS网络手机用户相关联的唯一识别编号如需要检索设备的ID;

代码如下:



缺点:

1)需要android.permission.READ_PHONE_STATE权限,它在6.0+系统中是需要动态申请的。

如果需求要求App启动时上报设备标识符的话,那么第一会影响初始化速度,第二还有可能被用户拒绝授权。

2)android系统碎片化严重,有的手机可能拿不到DeviceId,会返回null或者000000。


2、AndroidId

在设备首次启动时,系统会随机生成一个64位的数字,并把这个数字以16进制字符串的形式保存下来;

不需要权限,平板设备通用,获取成功率也较高,缺点是设备恢复出厂设置会重置;

另外就是某些厂商的低版本系统会有bug,返回的都是相同的AndroidId。 

厂商定制系统的Bug:不同的设备可能会产生相同的ANDROID_ID:9774d56d682e549c。 


厂商定制系统的Bug:有些设备返回的值为null。 


设备差异:对于CDMA设备,ANDROID_ID telephonyManager.getDeviceId() 返回相同的值。 


它在Android <=2.1 or Android >=2.3的版本是可靠、稳定的,但在2.2的版本并不是100%可靠的。 


通常被认为不可信,因为它有时为null。开发文档中说明了:这个ID会改变如果进行了出厂设置。并且,如果某个Andorid手机被Root过的话,这个ID也可以被任意改变。

获取方式如下:

获取安卓设备唯一标识,看着一篇就够了


3、Serial Number

Android系统2.3版本以上可以通过下面的方法得到Serial Number,且非手机设备也可以通过该接口获取。不需要权限,通用性也较高,但有些手机显示异常,也不一定靠谱。

获取安卓设备唯一标识,看着一篇就够了



wLan不必打开,就可读取些值。

获取安卓设备唯一标识,看着一篇就够了


5、生成UUID,并保存至系统数据库中

如果上述方式都不能获取到唯一编码,可尝试使用UUID将其保存到系统数据库中,这样卸载之后,这个值还在;但6.0 以后需要动态申请权限。

获取安卓设备唯一标识,看着一篇就够了


总结:

AndroidId 和 Serial Number 的通用性都较好,并且不受权限限制,如果刷机和恢复出厂设置会导致设备标识符重置这一点可以接受的话,那么将他们组合使用时,唯一性就可以应付绝大多数设备了。

获取安卓设备唯一标识,看着一篇就够了


如果还挺看重安全性,那么可以将其转换为md5格式:


END!!

喜欢就猛戳二维码关注哦,文中有误的话请留言支出!



以上是关于获取安卓设备唯一标识,看着一篇就够了的主要内容,如果未能解决你的问题,请参考以下文章

单例模式?这一篇就够了

Java注解 看这一篇就够了

获取安卓设备唯一标识UUID

获取安卓设备唯一标识UUID

值得珍藏!从技术运营中台建设到 AIOps 实践,看着一篇就够了

Android 设备唯一标识