获取Android设备唯一标识方案汇总(稳妥篇)

项目中遇到了一个需求,需要获取Android设备的唯一标识

查阅了百度、Google前几页的主流做法,发现并没有100%完美的方案,所以只能吸收各家的优势,汇总用到自己的项目中。

主流做法是,获取系统的某些信息,作为设备的唯一标识。

以下是不同的方案和存在的不足:

1.Build.SERIAL: 硬件序列号,可能重复,亲身经历过...

2.ANDROID_ID: 随机生成,出厂或者root后可能会变,可能会生成相同的9774d56d682e549c、可能为null。

3.硬件信息:两个相同型号的手机可能一样。升级后也可能会变。

4.IMEI:平板没有。6.0以上需要权限,为了一个标识去让用户同意一个权限...

5.InstallationID: 重新安装会变化

6.MAC地址:可能会变

7.随机生成一个ID,存起来:可能会被用户清理掉缓存

这些方案主要存在两个问题

1.可能重复

2.可能会变

最终采用方案

1.标识内容采用:Build.SERIAL+ANDROID_ID+硬件信息+MAC地址,进行加密生成一个32位标识

2.缓存:SharePreferences缓存 + SD Card缓存(使用隐藏文件)。

缓存目的:防止这些系统信息万一变了。而SD Card缓存是为了防止用户卸载重装APP后,缓存被清掉了。


最极端不幸的情况:

SharePreferences被用户清掉了 ,并且 SD Card的(隐藏)缓存文件被用户发现并清掉 了,并且 标识采用的四个系统信息还变了....

才可能出现标识变了,但可以说概率非常非常小了。

(代码晚点贴上)


原创文章,

觉得有用的不妨点个赞~


参考:

Android 设备唯一标识(多种实现方案)https://mp.weixin.qq.com/s/99eQ1_9wzYYByNTIrzOVfA

                                                                                

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容