目的:
尽可能实现,同一设备在不刷机不恢复出厂的情况下,每次生成的设备指纹不变;并且尽可能保证两部不同的设备生成的设备指纹不能一样)
原理:
1.将imei号+手机硬件信息+androidID拼接成一个字符串(由于个别手机某些时候获取的wifi MAC和蓝牙MAC不一致,故舍去这两项);
2.再用MD5把以上信息处理成32位的字符串;
参考:移动应用统计唯一ID的基本原理及 友盟UMID 方案解析
代码实现如下:
/**
* 获取设备指纹的工具类
*
* @author BarryHuang
* @DATE 2015-8-19
*/
public class FingerprintUtil {
private static final String TAG = FingerprintUtil.class.getSimpleName();
private static final String FINGER_PRINT = "fingerprint";
/**
* 获取设备指纹
* 如果从SharedPreferences文件中拿不到,那么重新生成一个,
* 并保存到SharedPreferences文件中。
*
* @param context
* @return fingerprint 设备指纹
*/
public static String getFingerprint(Context context) {
String fingerprint = null;
fingerprint = readFingerprintFromFile