Android获取设备唯一标识完美解决方案

来源:互联网 发布:csgo辅助源码 编辑:程序博客网 时间:2024/04/30 05:48

* deviceID的组成为:渠道标志+识别符来源标志+hash后的终端识别符* * 渠道标志为:* 1,andriod(a)* * 识别符来源标志:* 1, wifi mac地址(wifi);* 2, IMEI(imei);* 3, 序列号(sn);* 4, id:随机码。若前面的都取不到时,则随机生成一个随机码,需要缓存。** @param context* @return*/public static String getDeviceId(Context context) {StringBuilder deviceId = new StringBuilder();// 渠道标志deviceId.append("a");try {//wifi mac地址WifiManager wifi = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);WifiInfo info = wifi.getConnectionInfo();String wifiMac = info.getMacAddress();if(!isEmpty(wifiMac)){deviceId.append("wifi");deviceId.append(wifiMac);PALog.e("getDeviceId : ", deviceId.toString());return deviceId.toString();}//IMEI(imei)TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);String imei = tm.getDeviceId();if(!isEmpty(imei)){deviceId.append("imei");deviceId.append(imei);PALog.e("getDeviceId : ", deviceId.toString());return deviceId.toString();}//序列号(sn)String sn = tm.getSimSerialNumber();if(!isEmpty(sn)){deviceId.append("sn");deviceId.append(sn);PALog.e("getDeviceId : ", deviceId.toString());return deviceId.toString();}//如果上面都没有, 则生成一个id:随机码String uuid = getUUID(context);if(!isEmpty(uuid)){deviceId.append("id");deviceId.append(uuid);PALog.e("getDeviceId : ", deviceId.toString());return deviceId.toString();}} catch (Exception e) {e.printStackTrace();deviceId.append("id").append(getUUID(context));}PALog.e("getDeviceId : ", deviceId.toString());return deviceId.toString();}       /*** 得到全局唯一UUID*/public static String getUUID(Context context){SharedPreferences mShare = getSysShare(context, "sysCacheMap");if(mShare != null){uuid = mShare.getString("uuid", "");}if(isEmpty(uuid)){uuid = UUID.randomUUID().toString();saveSysMap(context, "sysCacheMap", "uuid", uuid);}PALog.e(tag, "getUUID : " + uuid);return uuid;}



本文地址   http://www.chengxuyuans.com/Android/54892.html

0 0