android获取设备唯一标识完美解决方案
2013-06-19 09:22
465 查看
/**
* 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;
}
* 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();
}
1 | /** |
if(isEmpty(uuid)){
uuid = UUID.randomUUID().toString();
saveSysMap(context, "sysCacheMap", "uuid", uuid);
}
PALog.e(tag, "getUUID : " + uuid);
return uuid;
}
相关文章推荐
- Android获取设备唯一标识完美解决方案
- android获取设备唯一标识完美解决方案的思考以及实现方式
- Android获取设备唯一标识完美解决方案
- 浅谈android获取设备唯一标识完美解决方案
- android获取设备唯一标识完美解决方案
- android获取设备唯一标识完美解决方案
- Android获取设备唯一标识完美解决方案
- android获取设备唯一标识完美解决方案
- 【转】 android获取设备唯一标识完美解决方案
- android 获取设备唯一标识完美解决方案
- android获取设备唯一标识解决方案
- android常用技术网站收藏过的网址 给 Android 开发者的 RxJava 详解 Android设备标识-没有完美的解决方案-只有取舍 - 小彼得的专栏 - 博客频道 - CSDN.NET
- Android下获取设备唯一标识(UDID, DeviceID...)
- Android设备标识-没有完美的解决方案-只有取舍
- 如何获取Android设备唯一标识(转)
- 获取Android设备唯一标识
- 获取Android设备唯一标识(唯一序列号)
- Android设备唯一标识ID的获取
- Android下获取设备唯一标识(UDID, DeviceID...)
- android获取设备唯一标识device_token