Мне нужно зарегистрировать пользовательские устройства на сервере с уникальным идентификатором, который будет постоянным значением и не изменится в будущем.
Я не могу найти хорошее решение для получения уникального идентификатора со всех устройств (с/без 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,...), которые действительно уникальны, не могут быть пустыми и не меняются после удаления/переустановки приложения?