android 获得Android设备唯一标识码 ANDROID_ID+Build.SERIAL再进行MD5加密

  • 前言
  • 选择

前言

先来读这篇文章,我觉得写的挺好的,也很全面:
如何唯一的标识一台Android设备?
相关内容就不重复了

选择

从上面那篇文章可知道没有最完美的方案,但是实际有需求还是要解决的,那就执行最可行方案
我选择的是 ANDROID_ID+Build.SERIAL再进行MD5加密
代码如下:

import android.annotation.SuppressLint;import android.content.Context;import android.os.Build;import android.provider.Settings;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;/** * 获取android设备唯一标识码 * created by dlong in 2019/02/21 */public class GetAndroidUniqueMark {    public static String getUniqueId(Context context){        @SuppressLint("HardwareIds")        // ANDROID_ID是设备第一次启动时产生和存储的64bit的一个数,当设备被wipe后该数重置。        String androidID = Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID);        @SuppressLint("HardwareIds")        String id = androidID + Build.SERIAL; // +硬件序列号        try {            return toMD5(id);        } catch (NoSuchAlgorithmException e) {            e.printStackTrace();            return id;        }    }    public static String toMD5(String text) throws NoSuchAlgorithmException {        //获取摘要器 MessageDigest        MessageDigest messageDigest = MessageDigest.getInstance("MD5");        //通过摘要器对字符串的二进制字节数组进行hash计算        byte[] digest = messageDigest.digest(text.getBytes());        StringBuilder sb = new StringBuilder();        for (int i = 0; i < digest.length; i++) {            //循环每个字符 将计算结果转化为正整数;            int digestInt = digest[i] & 0xff;            //将10进制转化为较短的16进制            String hexString = Integer.toHexString(digestInt);            //转化结果如果是个位数会省略0,因此判断并补0            if (hexString.length() < 2) {                sb.append(0);            }            //将循环结果添加到缓冲区            sb.append(hexString);        }        //返回整个结果        return sb.toString().substring(8,24);    }}

代码不是我想出来的,从几篇文章整理出来的,但是已过很久,没找到源头。
但使用了好久没有问题,也没遇到版本兼容性的问题。
标转载。
完事。

更多相关文章

  1. android实现蓝牙耳机的连接及列表的管理
  2. Android开发环境的搭建
  3. Android的ADB工具使用
  4. 获得 android 的 root 权限
  5. Android(安卓)API Guides---USB Host and Accessory
  6. 全程不用usb数据线,adb通过网络连接Android设备
  7. Android(安卓)1比1高仿微信图片选择器(新)
  8. android 日期选择控件 DatePicker
  9. android 图片合成

随机推荐

  1. 一起学android之微信登录(18)
  2. 提高Android应用程序的速度四大原则
  3. Android4.4的init进程
  4. Android(安卓)ProGuard实例教程
  5. 我的 Android(安卓)开发实战经验总结
  6. Android(安卓)自定义View流程
  7. Android实现二维码扫描功能(一)-ZXing插件
  8. Android热修复技术总结
  9. Android(安卓)Things:用户驱动-输入驱动
  10. Android(安卓)兼容性 | 充分利用新款 And