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,...), которые действительно уникальны, не могут быть пустыми и не меняются после удаления/переустановки приложения?
Ответы
Ответ 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?