Android获取设备唯一标识完美解决方案
2016-09-10 17:59
519 查看
/** * 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; }
亲测:
package org.cocos2dx.javascript; import android.content.Context; import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; import android.telephony.TelephonyManager; import static org.cocos2dx.lib.Cocos2dxActivity.getContext; /** * Created by Lovell on 9/19/16. */ public class UDID { public static String UDID() { StringBuilder deviceId = new StringBuilder(); // 渠道标志 deviceId.append("a"); try { // wifi mac地址 WifiManager wifi = (WifiManager) getContext().getSystemService(Context.WIFI_SERVICE); WifiInfo info = wifi.getConnectionInfo(); String wifiMac = info.getMacAddress(); if (!wifiMac.isEmpty()) { deviceId.append("wifi"); deviceId.append(wifiMac); return deviceId.toString(); } // IMEI(imei) TelephonyManager tm = (TelephonyManager) getContext().getSystemService(Context.TELEPHONY_SERVICE); String imei = tm.getDeviceId(); if (imei.isEmpty()) { deviceId.append("imei"); deviceId.append(imei); return deviceId.toString(); } // 序列号(sn) String sn = tm.getSimSerialNumber(); if (!sn.isEmpty()) { deviceId.append("sn"); deviceId.append(sn); return deviceId.toString(); } } catch (Exception e) { e.printStackTrace(); } return deviceId.toString(); } }
来自: http://blog.csdn.net/haoman100/article/details/8729803
相关文章推荐
- 浅谈android获取设备唯一标识完美解决方案
- android获取设备唯一标识完美解决方案
- android获取设备唯一标识完美解决方案的思考以及实现方式
- android 获取设备唯一标识完美解决方案
- 【转】 android获取设备唯一标识完美解决方案
- Android获取设备唯一标识完美解决方案
- android获取设备唯一标识完美解决方案
- android获取设备唯一标识完美解决方案
- Android获取设备唯一标识完美解决方案
- android获取设备唯一标识完美解决方案
- android获取设备唯一标识解决方案
- [Android][获取Android设备唯一标识]
- 安卓获取渠道名渠道id Android获取设备唯一标识的终极解决方法,防止安卓7.0时崩溃问题
- 获取Android设备唯一标识(唯一序列号)
- android常用技术网站收藏过的网址 给 Android 开发者的 RxJava 详解 Android设备标识-没有完美的解决方案-只有取舍 - 小彼得的专栏 - 博客频道 - CSDN.NET
- Android下获取设备唯一标识(UDID, DeviceID...)
- android开发中获取的设备id(每部手机的唯一标识)
- Android设备唯一标识ID的获取
- Android获取设备唯一标识
- android 获取设备唯一标识:imei 通过TelephonyManager