设为首页 加入收藏

TOP

Android 设备唯一标识(多种实现方案)(二)
2019-10-11 11:19:44 】 浏览:63
Tags:Android 设备 唯一 标识 多种 实现 方案
PHONY_SERVICE); return tm.getDeviceId(); } catch (Exception ex) { ex.printStackTrace(); } return ""; } /** * 获得设备的AndroidId * * @param context 上下文 * @return 设备的AndroidId */ private static String getAndroidId(Context context) { try { return Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID); } catch (Exception ex) { ex.printStackTrace(); } return ""; } /** * 获得设备序列号(如:WTK7N16923005607), 个别设备无法获取 * * @return 设备序列号 */ private static String getSERIAL() { try { return Build.SERIAL; } catch (Exception ex) { ex.printStackTrace(); } return ""; } /** * 获得设备硬件uuid * 使用硬件信息,计算出一个随机数 * * @return 设备硬件uuid */ private static String getDeviceUUID() { try { String dev = "3883756" + Build.BOARD.length() % 10 + Build.BRAND.length() % 10 + Build.DEVICE.length() % 10 + Build.HARDWARE.length() % 10 + Build.ID.length() % 10 + Build.MODEL.length() % 10 + Build.PRODUCT.length() % 10 + Build.SERIAL.length() % 10; return new UUID(dev.hashCode(), Build.SERIAL.hashCode()).toString(); } catch (Exception ex) { ex.printStackTrace(); return ""; } } /** * 取SHA1 * @param data 数据 * @return 对应的hash值 */ private static byte[] getHashByString(String data) { try{ MessageDigest messageDigest = MessageDigest.getInstance("SHA1"); messageDigest.reset(); messageDigest.update(data.getBytes("UTF-8")); return messageDigest.digest(); } catch (Exception e){ return "".getBytes(); } } /** * 转16进制字符串 * @param data 数据 * @return 16进制字符串 */ private static String bytesToHex(byte[] data){ StringBuilder sb = new StringBuilder(); String stmp; for (int n = 0; n < data.length; n++){ stmp = (Integer.toHexString(data[n] & 0xFF)); if (stmp.length() == 1) sb.append("0"); sb.append(stmp); } return sb.toString().toUpperCase(Locale.CHINA); } }

调用

String deviceId = DeviceIdUtil.getDeviceId(application);

结果输出:FE00DDE9298310CDFEEFE69229B8DB248534710F

总结

方案1局限性较大,不建议使用;
方案2是很多软件采用的方案,因很少有人删除SD卡文件;但需要注意权限;
方案3相较于前两种方案,限制性较小,只要硬件信息不变结果就不变。而且该方案可自行定制组合。

究竟哪种方案合适,大家应根据自己的项目需求,合理选择才是。

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Android自定义控件:图形报表的实.. 下一篇星之小说下载器Android版

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目