Android设备唯一标识生成方式
为什么很多安卓应用都要获取IMEI?
很多应用都会要求获取IMEI,尤其神奇的是,我禁用了天猫客户端的权限,弹出来一行英文,大概是什么内容获取不到,无法登录,又试了一次,登录成功,发现权限管理里权限竟然被打开了。
像天猫(支付宝)/微信这样的登陆时校验一下设备串号是有意义的这是用来确保是由你的设备在登陆。
IMEI一般作手机的唯一标识,用于服务端日志统计,数据分析。
但是有些厂商的设备,IMEI并不是总能够获取到,解决的办法就是我们手动生成一个ID值,后面再详细讲解。
一、IMEI获取
imei是设备的一个编号值,获取比较方便,不过有些设备的设备编号获取不到,这种方式已经没有多少人会采用。下面就讲讲怎么获取imei编号。
1、首先要获取到设备的imei编号,必须得开启权限,在AndroidManifest.xml文件中添加入下字段:
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
2、获取imei值
private TelephonyManager manager;
manager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); imei = manager.getDeviceId(); tv.setText(imei);
二、UUID生成
UUID生成的原理,先获取设备的标识信息,如果能够获取到就使用该获取到的值,否则就生成一个随机数,然后通过缓存和文件的方式保存这个值。
1、生成UUID部分的关键源码如下:
public DeviceUuidFactory(Context context) { if (uuid == null) { synchronized (DeviceUuidFactory.class) { if (uuid == null) {