Pregunta Android: ID de dispositivo único y constante


Necesito registrar dispositivos de usuario en el servidor con un identificador único que sea un valor constante y no cambie en el futuro.

No puedo encontrar una buena solución para obtener una identificación única de todos los dispositivos (con / sin tarjeta SIM).

Secure.ANDROID_ID: Secure.ANDROID_ID no es único y puede ser nulo o cambiar en el restablecimiento de fábrica.

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

IMEI: IMEI depende de la ranura de Simcard del dispositivo, por lo que no es posible obtener el IMEI para los dispositivos que no usan Simcard.

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

WLAN MAC Dirección: Si el dispositivo no tiene hardware wifi, entonces devuelve una dirección MAC nula. y el usuario puede cambiar la dirección MAC del dispositivo.

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

Cadena de dirección Bluetooth: Si el dispositivo no tiene hardware bluetooth, devuelve null.

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

ID de instancia: instance_id cambiará cuando el usuario desinstale y reinstale la aplicación. y no es un valor constante.

¿Tiene alguna idea de obtener una identificación única de todos los dispositivos Android (con / sin tarjeta SIM, Bluetooth, ...) que realmente sean únicos, no puedan ser nulos y no cambien después de desinstalar / reinstalar la aplicación?


11
2017-09-25 10:20


origen


Respuestas:


Descubrí que Secure.ANDROID_ID es la mejor opción. Esta es una cantidad de 64 bits que se genera y almacena cuando el dispositivo se inicia por primera vez. Pero se reinicia en el restablecimiento de fábrica del dispositivo.

Hay algunos informes que muestran que algunos dispositivos tienen el mismo Secure.ANDROID_ID en todas las instancias.

podemos agregar elementos adicionales (como seriales sim, ID de instancia de GCM o ...) a Secure.ANDROID_ID y generar una nueva huella digital única.


3
2017-08-13 20:32



Los usuarios de Mutiple se pueden configurar en dispositivos Android y Secure.ANDROID_ID es diferente para cada usuario en el mismo dispositivo Android. Por lo tanto, usar Secure.ANDROID_ID significa que los dispositivos individuales se registrarán como un dispositivo diferente para cada configuración de usuario en el dispositivo.


2
2017-11-22 14:05



Secure.ANDROID_ID es tu único amigo. Sin embargo, tiene algunos problemas (resultados vacíos) en dispositivos más antiguos (<2.3). Todas las demás identificaciones no funcionan en todo tipo de dispositivos.

Por favor lea también ¿Hay una identificación de dispositivo Android única?


0
2017-09-25 12:58