Уникальный идентификатор устройства 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" ), который позаботится об этом.
Обратите внимание, что этим предупреждением Линт дает возможность переосмыслить, нужно ли публиковать или нет.