DeviceUuidFactory.java 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. package com.edufound.mobile.util;
  2. import android.annotation.SuppressLint;
  3. import android.content.Context;
  4. import android.provider.Settings;
  5. import android.telephony.TelephonyManager;
  6. import java.io.UnsupportedEncodingException;
  7. import java.util.UUID;
  8. public class DeviceUuidFactory {
  9. public static final String UUID_SPKEY = "uuid";
  10. protected static UUID uuid;
  11. public DeviceUuidFactory(Context context) {
  12. if (uuid == null) {
  13. synchronized (DeviceUuidFactory.class) {
  14. if (uuid == null) {
  15. try {
  16. final String androidId = Settings.Secure.getString(
  17. context.getContentResolver(), Settings.Secure.ANDROID_ID);
  18. if (!"9774d56d682e549c".equals(androidId)) {
  19. uuid = UUID.nameUUIDFromBytes(androidId.getBytes("utf8"));
  20. } else {
  21. @SuppressLint("MissingPermission") final String deviceId = ((TelephonyManager) context
  22. .getSystemService(Context.TELEPHONY_SERVICE))
  23. .getDeviceId();
  24. uuid = deviceId != null ? UUID.nameUUIDFromBytes(deviceId
  25. .getBytes("utf8")) : UUID.randomUUID();
  26. try {
  27. } catch (Exception e) {
  28. e.printStackTrace();
  29. }
  30. }
  31. } catch (UnsupportedEncodingException e) {
  32. throw new RuntimeException(e);
  33. }
  34. }
  35. SPutil.setPrefString(context, UUID_SPKEY, uuid.toString());
  36. }
  37. }
  38. }
  39. /**
  40. * @return UUID
  41. */
  42. public static UUID getUuid() {
  43. if (uuid == null || uuid.equals("") || uuid.equals("null")) {
  44. return null;
  45. }
  46. return uuid;
  47. }
  48. }