Является ли Secure.ANDROID_ID уникальным для каждого устройства?

Я использую этот вызов:

Secure.getString(getApplicationContext().getContentResolver(), Secure.ANDROID_ID); 

Чтобы получить UID для устройства. Я думаю, что я получаю одинаковый идентификатор от нескольких устройств. Должно ли это быть возможным?

Идентификатор, о котором идет речь, составляет: 9774d56d682e549c и, по-видимому, существует проблема с несколькими устройствами, возвращающими этот идентификатор http://code.google.com/p/android/issues/list?cursor=10603&updated=10603&ts=1295993403

Solutions Collecting From Web of "Является ли Secure.ANDROID_ID уникальным для каждого устройства?"

Проверьте эту тему . Однако вы должны быть осторожны, поскольку это задокументировано как «может измениться после заводского сброса». Используйте на свой страх и риск, и его можно легко изменить на корневом телефоне. Также кажется, что некоторые производители столкнулись с проблемами со своими телефонами, имеющими поток повторяющихся номеров. В зависимости от того, что вы пытаетесь сделать, я, вероятно, не использовал бы это как UID.

Поэтому, если вам нужно что-то уникальное для самого устройства, TM.getDeviceId() должно быть достаточно.

Вот код, который показывает, как получить идентификатор менеджера телефонии. Идентификатор устройства Android, который вы используете, может изменяться по заводским настройкам, а также некоторые производители имеют проблемы с предоставлением уникального идентификатора.

 TelephonyManager tm = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE); Log.d("ID", "Android ID: " + Secure.getString(getContentResolver(), Secure.ANDROID_ID)); Log.d("ID", "Device ID : " + tm.getDeviceId()); 

Обязательно принимайте разрешения для TelephonyManager , используя

 <uses-permission android:name="android.permission.READ_PHONE_STATE" /> 

С Android O изменится поведение ANDROID_ID. ANDROID_ID будет отличаться для каждого приложения на телефоне.

Снято с: https://android-developers.googleblog.com/2017/04/changes-to-device-identifiers-in.html

Android ID

В O идентификатор Android (Settings.Secure.ANDROID_ID или SSAID) имеет другое значение для каждого приложения и каждого пользователя на устройстве. Разработчикам, требующим идентификатор с привязкой к устройству, вместо этого следует использовать идентификатор сбрасывания, такой как идентификатор рекламы, предоставляя пользователям больше контроля. Идентификатор рекламы также предоставляет настраиваемую пользователем настройку для ограничения отслеживания объявлений.

Дополнительно в Android O:

  • Значение ANDROID_ID не будет изменяться при удалении / переустановке пакета, если имя пакета и ключ подписывания совпадают. Приложения могут полагаться на это значение, чтобы поддерживать состояние через переустановки.
  • Если приложение было установлено на устройстве с ранней версией Android, идентификатор Android остается прежним, когда устройство обновляется до Android O, если приложение не будет удалено и переустановлено.
  • Идентификатор Android-идентификатора изменяется только в том случае, если устройство сбрасывается с завода или если ключ подписи вращается между деинсталляцией и
    Переустановить события.
  • Это изменение требуется только для производителей устройств, поставляющих услуги Google Play и рекламный идентификатор. Другие производители устройств могут предоставить альтернативный идентификатор сбрасывания или продолжать предоставлять идентификатор ANDROID.

Я прочитал несколько вещей об этом, и, к сожалению, для ANDROID_ID не следует полагаться на уникальную идентификацию отдельного устройства.

Похоже, что это не соблюдается в требованиях соответствия Android и поэтому производители, похоже, реализуют его так, как они выбирают, в том числе некоторые используют его больше как идентификатор модели и т. Д.

Кроме того, имейте в виду, что даже если производитель написал генератор, чтобы сделать его UUID (например), он не гарантирует, что вы сохраните заводскую перезагрузку.

Просто перечислите альтернативное решение здесь, рекламный идентификатор:

https://support.google.com/googleplay/android-developer/answer/6048248?hl=en

Скопировано по ссылке выше:

Идентификатор рекламы – это уникальный, сбрасываемый пользователем идентификатор для рекламы, предоставляемый службами Google Play. Это дает пользователям лучший контроль и предоставляет разработчикам простую стандартную систему, чтобы продолжать монетизировать свои приложения. Это позволяет пользователям сбросить свой идентификатор или отказаться от персонализированных объявлений (ранее известных как рекламные объявления на основе интересов) в приложениях Google Play.

Ограничения:

  1. Только устройства с поддержкой Google Play.
  2. Политика конфиденциальности: https://support.google.com/googleplay/android-developer/answer/113469?hl=en&rd=1#privacy