Разница между идентификатором Android и идентификатором устройства

В чем разница между идентификатором Android и идентификатором устройства?

Вот как я их получаю:

Идентификатор Android:

String androidID = Settings.Secure.getString(MainActivity.this.getContentResolver(),
            Settings.Secure.ANDROID_ID);

Идентификатор устройства:

String deviceID = ((TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE))
                    .getDeviceId()

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

  1. В чем точная разница между ними? Если их нет, то зачем два идентификатора?

  2. Будут ли сброшены оба идентификатора, если я сброшу свое устройство до заводских настроек?

  3. Я знаю, что deviceIDработает для всех версий Android. Будет ли androidIDработать для всех версий?

Ответы (1)

Хотя ваш вопрос касается проблемы разработки (которая здесь не по теме), ответ актуален и для пользователей, поэтому я отвечу на него:

  • DeviceID: это серийный номер устройства, который должен сохраняться даже после сброса настроек.
  • AndroidID: будет установлен при первой загрузке (либо с новым устройством, либо после сброса настроек). Как подразумевается, он не выживает после
  • Существует второй « Android_ID », который генерируется и используется Google Services Framework (GSF) и поэтому часто упоминается как « идентификатор GSF ». В основном ведет себя как AndroidID, упомянутый ранее (например, не выживает после настройкам ) и сосуществует с ним.
  • Кроме того, есть GAID ( Google Advertising ID ), который пользователь может сбросить через приложение Google Settings .

Во время «нормальной работы» (т. е. до тех пор, пока вы не сбросите устройство до заводских настроек или не сбросите GAID) все эти идентификаторы можно использовать для идентификации устройства. При использовании нескольких пользователей (через профили пользователей) на устройстве все, кроме DeviceID, будут даже идентифицировать пользователя (профиль).

Насколько мне известно, все эти идентификаторы доступны во всех версиях Android (по крайней мере, в тех, которые в настоящее время актуальны, например, GB/2.3 и выше). Последние два, очевидно, только в том случае, если установлены GApps, поэтому на устройствах с пользовательским ПЗУ без GApps их может не быть.