Это Безопасно.Android ID уникальный для каждого устройства?

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

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

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

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

6 ответов


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


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

взято из: https://android-developers.googleblog.com/2017/04/changes-to-device-identifiers-in.html

Android ID

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

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

  • значение ANDROID_ID не изменится при удалении/переустановке пакета, так как если имя пакета и ключ подписи совпадают. Приложения могут полагаться на это значение, чтобы поддерживать состояние через переустановки.
  • если приложение было установлено на устройстве с более ранней версией из Android, Android ID остается тем же, когда устройство обновлено до Android O, если приложение не будет удалено и повторно установленный.
  • значение Android ID изменяется, только если устройство является заводским сброс или если ключ подписи вращается между uninstall и
    переустановите события.
  • данное изменение требуется только для производителей устройств доставка с помощью сервисов Google Play и рекламного идентификатора. Другой производители устройств могут обеспечить альтернативный сброс идентификатор или продолжайте предоставлять Android ID.

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

вот код, который показывает, как получить Telephony manager ID. Идентификатор устройства android, который вы используете, может изменяться на заводских настройках, а также у некоторых производителей есть проблема с предоставлением уникального идентификатора.

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

обязательно возьмите разрешения для TelephonyManager С помощью

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

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

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

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


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

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

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

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

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

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

//Fields
String myID;
int myversion = 0;


myversion = Integer.valueOf(android.os.Build.VERSION.SDK);
if (myversion < 23) {
        TelephonyManager mngr = (TelephonyManager) 
getSystemService(Context.TELEPHONY_SERVICE);
        myID= mngr.getDeviceId();
    }
    else
    {
        myID = 
Settings.Secure.getString(getApplicationContext().getContentResolver(), 
Settings.Secure.ANDROID_ID);
    }

Да, Безопасно.ANDROID_ID уникален для каждого устройства.