安卓設(shè)備相對靠譜設(shè)備唯一碼

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() {
        //這里選用了幾個不會隨系統(tǒng)更新而改變的值
        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)

.
.

此類非原創(chuàng)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 唯一標(biāo)識符最佳做法 目錄 使用 Android 標(biāo)識符的最佳做法 Android 8.0 及更高版本中的標(biāo)識符 使...
    StoneWay3閱讀 1,978評論 0 0
  • 放下執(zhí)著心,只保留核心項的自律。時間是有限的,只有舍掉一些東西才能得到另外的東西,生活中時時處處都無不是一種斷舍離...
    老莊夢談閱讀 364評論 6 5
  • 上卷-素問 篇1:上古天真論 昔在黃帝,生而神靈,弱而能言,幼而徇齊,長而敦敏,成而登天。乃問于天師曰:余聞上古之...
    cangyu2013閱讀 712評論 0 0
  • 給十年前沒心沒肺又很努力的自己: 十年了,過得真快。 十年了,沒想到我活成了這樣。 十年了,感謝這個沒心沒肺卻很努...
    冰果真多閱讀 174評論 0 3
  • (稻盛哲學(xué)學(xué)習(xí)會)打卡第169天 姓名:占曉敏 部門:分水碶 組別:利他二組 【知~學(xué)習(xí)】 學(xué)習(xí)《經(jīng)營十二條》第三...
    占曉敏閱讀 569評論 0 0

友情鏈接更多精彩內(nèi)容