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区分pad还是phone设备
  2. 全程不用usb数据线,adb通过网络连接Android设备
  3. Android进程管理机制及优化 for HTC HeRO(其它设备也可参考)+自动
  4. Android xliff和字符串资源
  5. 如何查看Android设备的CPU架构信息
  6. 【android】如何查看Android设备的CPU架构信息
  7. Linux/Ubuntu下android设备添加adb驱动
  8. android xliff字符串操作

随机推荐

  1. Android(安卓)2.1 中 JNI 层 camera 的应
  2. android软件中自定义设置字体
  3. Android中的MVP模式使用
  4. Android(安卓)View学习示例
  5. 浅入浅出 Android(安卓)安全:第四章 Andro
  6. Android:Looper类,Looper.prepare()和Loope
  7. Android滑动菜单
  8. Jack 服务编译问题 Android(安卓)7.0
  9. Android的BUG(五)- Android跨进程使用Graph
  10. Android基于Ffmpeg 的软编软解的可视对讲