Android设备唯一标识符(Unique Identifiers)是指在Android设备上用于标识一个唯一实例的标识符。Android提供了许多不同的选项来获取设备ID,例如IMEI、MAC地址、Android ID等,但是在某些情况下,这些ID可能会因某种原因而不可用。因此,我们需要使用一种更可靠的方法来获取设备ID,例如使用UUID(通用唯一标识符)。
以下是一个使用UUID获取设备唯一标识符的示例代码:
import android.content.Context;
import android.provider.Settings.Secure;
import java.io.UnsupportedEncodingException;
import java.util.UUID;
public class DeviceUtils {
private static final String PREFS_FILE = "device_id.xml";
private static final String PREFS_DEVICE_ID = "device_id";
private volatile static UUID uuid;
public static UUID getDeviceUuid(Context context) {
if (uuid == null) {
synchronized (DeviceUtils.class) {
if (uuid == null) {
final String id = getDeviceId(context);
if (id != null) {
// Use the id as the uuid:
uuid = UUID.fromString(id);
} else {
final String androidId = Secure.getString(context.getContentResolver(), Secure.ANDROID_ID);
// Use the androidId unless it's broken, in which case fallback on deviceId:
try {
if (!"9774d56d682e549c".equals(androidId)) {
uuid = UUID.nameUUIDFromBytes(androidId.getBytes("utf8"));
} else {
final String deviceId = ((TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE)).getDeviceId();
uuid = deviceId != null ? UUID.nameUUIDFromBytes(deviceId.getBytes("utf8")) : UUID.randomUUID();
}
} catch (UnsupportedEncodingException e) {
throw new RuntimeException(e);
}
}
}
}
}
return uuid;
}
private static String getDeviceId(Context context) {
final SharedPreferences prefs = context.getSharedPreferences(PREFS_FILE, 0);
final String id = prefs.getString(P