Уникальный идентификатор устройства 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.

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

Ответы

Ответ 1

Вы не можете "решить" это предупреждение.

Но если вы хотите, вы можете отключить предупреждение, добавив @SuppressLint ( "HardwareIds" ), который позаботится об этом.

Обратите внимание, что этим предупреждением Линт дает возможность переосмыслить, нужно ли публиковать или нет.