Android: идентификатор Android изменяется при обновлении приложения. Что-то уникальное вместо этого?

Я получаю идентификатор Android с кодом ниже:

DeviceID = Secure.getString(this.getContentResolver(),
                    Secure.ANDROID_ID);

Но это меняется при каждом обновлении. Это неправильный способ получить его или есть что-то другое, что я могу использовать, который никогда не меняется и остается уникальным для того же устройства каждый раз?

3 ответа

Ответы, содержащие только ссылки, обычно не приветствуются, но я не вижу альтернативы в этом случае, так как статья достаточно глубока и касается различных уровней API.

См. Документацию для правильного способа справиться с этим (согласно Google):

http://developer.android.com/training/articles/user-data-ids.html

Использовать hardwareID вместо этого это не должно измениться так сильно...

Вот код, чтобы попробовать:

/**
 * Returns the embedded <i>hardwareID</i>
 * @param context which {@link Context} to use
 * @return the hardwareID
 */
public static String getHardwareId(Context context) {
    return Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID);
}

К сожалению, нет ничего, что соответствует вашим требованиям.

Когда дело доходит до уникальных идентификаторов устройства Android, существует множество различных опций, но ни один из них не является гарантией 100% работы. И получение большинства из них требует запроса неприятных разрешений от пользователя.

Я могу предложить два варианта:

  1. Использование рекламного идентификатора Google - он уникален для каждого устройства и изменится только в том случае, если пользователь сбросит его вручную. Для его извлечения не требуется никаких дополнительных разрешений.
  2. Вы можете сгенерировать уникальный ключ для каждого устройства самостоятельно (используя что-то вроде UUID) и сохранить его на устройстве (общие префы, файл, база данных...).
Другие вопросы по тегам