package com.zj.zjdsp.core.utils; import android.content.Context; import android.content.SharedPreferences; import android.os.Build; import android.provider.Settings; import android.telephony.TelephonyManager; import com.zj.zjdsp.core.config.SdkConfig; import com.zj.zmmkv.ZMMKV; import java.nio.charset.StandardCharsets; import java.security.MessageDigest; import java.util.Locale; import java.util.UUID; import kotlin.UByte; public class DeviceIdUtil { private static final String ZJ_UUID_KEY = "ZJ_UUID_VALUE"; private static final String ZJ_UUID_SP_KV = "ZJ_CONFIG_UUID"; public static String getDeviceId(Context context) { StringBuilder sb = new StringBuilder(); String imei = getIMEI(context); String androidId = getAndroidId(context); String serial = getSERIAL(); String deviceUUID = getDeviceUUID(); if (imei != null && imei.length() > 0) { sb.append(imei); sb.append("|"); } if (androidId != null && androidId.length() > 0) { sb.append(androidId); sb.append("|"); } if (serial != null && serial.length() > 0) { sb.append(serial); sb.append("|"); } if (deviceUUID != null && deviceUUID.length() > 0) { sb.append(deviceUUID); } if (sb.length() > 0) { try { String bytesToHex = bytesToHex(getHashByString(sb.toString())); if (bytesToHex.length() > 0) { return bytesToHex; } } catch (Exception unused) { } } return UUID.randomUUID().toString().replace("-", ""); } public static String getIMEI(Context context) { try { return ((TelephonyManager) context.getSystemService("phone")).getDeviceId(); } catch (Throwable unused) { return ""; } } private static String getAndroidId(Context context) { try { return Settings.Secure.getString(context.getContentResolver(), "android_id"); } catch (Exception unused) { return ""; } } private static String getSERIAL() { try { return Build.SERIAL; } catch (Exception unused) { return ""; } } public static String getDeviceUUID() { String str; SharedPreferences sharedPreferences = null; try { if (ZMMKV.IS_VALID) { str = ZMMKV.mmkvWithID(ZJ_UUID_SP_KV).decodeString(ZJ_UUID_KEY); } else if (SdkConfig.context == null) { return null; } else { sharedPreferences = SdkConfig.context.getSharedPreferences(ZJ_UUID_SP_KV, 0); str = sharedPreferences.getString(ZJ_UUID_KEY, ""); } } catch (Throwable unused) { str = ""; } if (str == null || str.length() <= 0) { str = UUID.randomUUID().toString().replace("-", "").toLowerCase(); try { if (ZMMKV.IS_VALID) { ZMMKV.mmkvWithID(ZJ_UUID_SP_KV).encode(ZJ_UUID_KEY, str); } else if (sharedPreferences != null) { sharedPreferences.edit().putString(ZJ_UUID_KEY, str).apply(); } } catch (Throwable unused2) { } } return str; } private static byte[] getHashByString(String str) { try { MessageDigest instance = MessageDigest.getInstance("SHA1"); instance.reset(); instance.update(str.getBytes(StandardCharsets.UTF_8)); return instance.digest(); } catch (Exception unused) { return "".getBytes(); } } private static String bytesToHex(byte[] bArr) { StringBuilder sb = new StringBuilder(); for (byte b : bArr) { String hexString = Integer.toHexString(b & UByte.MAX_VALUE); if (hexString.length() == 1) { sb.append("0"); } sb.append(hexString); } return sb.toString().toUpperCase(Locale.CHINA); } }