Подтвердить что ты не робот

Android - уникальный и постоянный идентификатор устройства

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

Я не могу найти хорошее решение для получения уникального идентификатора со всех устройств (с/без simcard).

Secure.ANDROID_ID: Secure.ANDROID_ID не уникален и может быть нулевым или изменить на factory reset.

String m_androidId = Secure.getString(getContentResolver(), Secure.ANDROID_ID);

IMEI: IMEI зависит от слота Simcard устройства, поэтому невозможно получить IMEI для устройств, которые не используют SIM-карту.

TelephonyManager tManager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
String uuid = tManager.getDeviceId();

MAC-адрес WLAN. Если устройство не имеет wifi-оборудования, оно возвращает нулевой MAC-адрес. и пользователь может изменить MAC-адрес устройства.

WifiManager m_wm = (WifiManager)getSystemService(Context.WIFI_SERVICE); 
String m_wlanMacAdd = m_wm.getConnectionInfo().getMacAddress();

Строка адреса Bluetooth. Если устройство не имеет оборудования Bluetooth, оно возвращает null.

BluetoothAdapter m_BluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); 
String m_bluetoothAdd = m_BluetoothAdapter.getAddress();

Идентификатор экземпляра: instance_id изменится, когда пользователь удалит и переустановит приложение. и это не постоянное значение.

Есть ли у вас идея получить уникальный идентификатор со всех Android-устройств (с/без simcard, Bluetooth,...), которые действительно уникальны, не могут быть пустыми и не меняются после удаления/переустановки приложения?

4b9b3361

Ответ 1

Я обнаружил, что Secure.ANDROID_ID - лучший выбор. Это 64-разрядное количество, которое генерируется и сохраняется при первом загрузке устройства. Но он сбрасывается на устройстве factory reset.

есть несколько отчетов, которые показывают, что некоторые устройства имеют одинаковый Secure.ANDROID_ID для всех экземпляров.

мы можем добавить дополнительные элементы (например, серийный симулятор, идентификатор экземпляра GCM или...) в файл Secure.ANDROID_ID и создать новый уникальный отпечаток.

Ответ 2

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

Ответ 3

Secure.ANDROID_ID - ваш единственный друг. Однако у него есть некоторые проблемы (пустые результаты) на более старых (< 2.3) устройствах. Все остальные идентификаторы не работают на всех типах устройств.

Также читайте Есть ли уникальный идентификатор устройства Android?