¿Cuál es la diferencia entre la identificación de Android y la identificación del dispositivo?
Así es como los obtengo:
Identificación de Android:
String androidID = Settings.Secure.getString(MainActivity.this.getContentResolver(),
Settings.Secure.ANDROID_ID);
Identificación del dispositivo:
String deviceID = ((TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE))
.getDeviceId()
Necesito identificar de forma única mi dispositivo Android. El uso deviceID
necesita el permiso para "hacer y administrar llamadas telefónicas". Mientras que el uso androidID
no lo hace. Por lo tanto, me voy androidID
porque no necesito ningún privilegio de gestión de llamadas.
¿Cuál es la diferencia exacta entre los dos? Si no hay ninguno, ¿por qué hay dos identificaciones?
¿Se restablecerán ambas identificaciones si restablezco mi dispositivo de fábrica?
Sé que deviceID
funciona para todas las versiones de Android. ¿ androidID
Funcionará para todas las versiones?
Si bien su pregunta se enfoca en un problema de desarrollo (que está fuera de tema aquí), la respuesta también es relevante para los usuarios, por lo que la responderé:
Durante el "funcionamiento normal" (es decir, siempre que no restablezca su dispositivo de fábrica ni restablezca el GAID), todos estos ID se pueden usar para identificar el dispositivo. Cuando se utilizan varios usuarios (a través de perfiles de usuario) en un dispositivo, todos, excepto DeviceID, incluso identificarían al usuario (perfil).
Que yo sepa, todas esas identificaciones están disponibles en todas las versiones de Android (al menos en aquellas que son relevantes actualmente, es decir, GB/2.3 y más). Los dos últimos, obviamente, solo si GApps está instalado, por lo que en los dispositivos que ejecutan una ROM personalizada sin GApps, es posible que no existan.