Уникальный идентификатор устройства Android после предупреждения MarshMallow «Получить идентификаторы устройств не рекомендуется»?

Я видел один из моих лучших вопросов. Есть ли уникальный идентификатор устройства Android?

Я использовал следующий код для получения уникального идентификатора.

public static String getDeviceId(Activity context) { PermissionsChecker checker = new PermissionsChecker(context); if (checker.lacksPermissions(Manifest.permission.READ_PHONE_STATE)) PermissionsActivity.startActivityForResult(context, 0, REQUIRED_PERMISSION); else { TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); final String tmDevice = tm.getDeviceId(); final String androidId = Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID); UUID deviceUuid = new UUID(androidId.hashCode(), ((long) tmDevice.hashCode() << 32)); return deviceUuid.toString(); } return null; } 

Но я получаю предупреждение о зависании

tm.getDeviceId();

а также

Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID); Следующим образом:

Использование getString для получения идентификаторов устройства не рекомендуется.

Использование идентификаторов устройств не рекомендуется, кроме как для предотвращения дорогостоящих мошенников и расширенных телефонных прецедентов. Для рекламных прецедентов используйте AdvertisingIdClient $ Info # getId и для аналитики используйте InstanceId # getId.

Есть ли решение? Это вредно или что-то еще?

Solutions Collecting From Web of "Уникальный идентификатор устройства Android после предупреждения MarshMallow «Получить идентификаторы устройств не рекомендуется»?"