安卓设备相对靠谱设备唯一码

public class DeviceIdUtils {


    /**
     * 获取唯一id
     * @param context
     * @return
     */
    public static String getDeviceUUID(Context context) {
        String uuid = loadDeviceUUID(context);
        if (TextUtils.isEmpty(uuid)) {
            uuid = buildDeviceUUID(context);
            saveDeviceUUID(context, uuid);
        }
        return uuid;
    }

    private static String buildDeviceUUID(Context context) {
        String androidId = getAndroidId(context);
        if ("9774d56d682e549c".equals(androidId)) {
            Random random = new Random();
            androidId = Integer.toHexString(random.nextInt())
                    + Integer.toHexString(random.nextInt())
                    + Integer.toHexString(random.nextInt());
        }
        return new UUID(androidId.hashCode(), getBuildInfo().hashCode()).toString();
    }

    private static void saveDeviceUUID(Context context, String uuid) {
        context.getSharedPreferences("device_uuid", Context.MODE_PRIVATE)
                .edit()
                .putString("uuid", uuid)
                .apply();
    }

    @Nullable
    private static String loadDeviceUUID(Context context) {
        return context.getSharedPreferences("device_uuid", Context.MODE_PRIVATE)
                .getString("uuid", null);
    }

    public static String getAndroidId(Context context) {
        return Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID);
    }

    public static String getBuildInfo() {
        //这里选用了几个不会随系统更新而改变的值
        StringBuffer buildSB = new StringBuffer();
        buildSB.append(Build.BRAND).append("/");
        buildSB.append(Build.PRODUCT).append("/");
        buildSB.append(Build.DEVICE).append("/");
        buildSB.append(Build.ID).append("/");
        buildSB.append(Build.VERSION.INCREMENTAL);
        return buildSB.toString();
        //        return Build.FINGERPRINT;
    }
}

.
.
使用

DeviceIdUtils.getDeviceUUID(MainActivity.this)

.
.

此类非原创。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 唯一标识符最佳做法 目录 使用 Android 标识符的最佳做法 Android 8.0 及更高版本中的标识符 使...
    StoneWay3阅读 1,939评论 0 0
  • 放下执着心,只保留核心项的自律。时间是有限的,只有舍掉一些东西才能得到另外的东西,生活中时时处处都无不是一种断舍离...
    老庄梦谈阅读 346评论 6 5
  • 上卷-素问 篇1:上古天真论 昔在黄帝,生而神灵,弱而能言,幼而徇齐,长而敦敏,成而登天。乃问于天师曰:余闻上古之...
    cangyu2013阅读 699评论 0 0
  • 给十年前没心没肺又很努力的自己: 十年了,过得真快。 十年了,没想到我活成了这样。 十年了,感谢这个没心没肺却很努...
    冰果真多阅读 146评论 0 3
  • (稻盛哲学学习会)打卡第169天 姓名:占晓敏 部门:分水碶 组别:利他二组 【知~学习】 学习《经营十二条》第三...
    占晓敏阅读 484评论 0 0