Voluntad TelephonyManger.getDeviceId () devuelven Identificación del dispositivo para tabletas como Galaxy Tab ...?
Pregunta
Quiero obtener el ID del dispositivo que será único para cada dispositivo Android. Actualmente estoy desarrollando un dispositivo de tableta. ¿Quieres obtener ID única del dispositivo y almacenar los valores correspondientes ...
Por lo tanto, quiero saber si los dispositivos Tablet devolverá un valor si uso TelephonyManager.getDeviceId () ... ??? o hay cualquier otro valor que es único para cada dispositivo ???
Solución
Este es no una pregunta duplicado. Pues resulta que, CTS de Google requieren que getPhoneType de TelephonyManager tiene que ser mejor, y GetDeviceID de TelephonyManager debe ser nulo para dispositivos que no son teléfonos.
Así que para obtener el IMEI, intenta utilizar:
String imei = SystemProperties.get("ro.gsm.imei")
Por desgracia, SystemProperties es una clase que no sea pública en el sistema operativo Android, lo que significa que no está disponible públicamente a las aplicaciones regulares. Intente buscar en este post de ayuda para acceder a él: ¿Dónde está android.os.SystemProperties
Otros consejos
TelephonyManger.getDeviceId () Devuelve el identificador de dispositivo único, por ejemplo, el IMEI para GSM y el MEID o ESN para los teléfonos CDMA.
final TelephonyManager mTelephony = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
String myAndroidDeviceId = mTelephony.getDeviceId();
Sin embargo, se recomienda utilizar el:
Settings.Secure.ANDROID_ID que devuelve el identificador de Android como una cadena única hexadecimal de 64 bits.
String myAndroidDeviceId = Secure.getString(getApplicationContext().getContentResolver(), Secure.ANDROID_ID);
A veces TelephonyManger.getDeviceId () devolverá un valor nulo, de modo de asegurar un identificador único que va a utilizar este método:
public String getUniqueID(){
String myAndroidDeviceId = "";
TelephonyManager mTelephony = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
if (mTelephony.getDeviceId() != null){
myAndroidDeviceId = mTelephony.getDeviceId();
}else{
myAndroidDeviceId = Secure.getString(getApplicationContext().getContentResolver(), Secure.ANDROID_ID);
}
return myAndroidDeviceId;
}
Dado que Android 8 Todo ha cambiado. Debe utilizar Build.getSerial()
, para obtener el número de serie del dispositivo y añadir el READ_PHONE_STATE
permiso.
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
serial = Build.getSerial(); // Requires permission READ_PHONE_STATE
} else {
serial = Build.SERIAL; // Will return 'unknown' for device >= Build.VERSION_CODES.O
}
Y obtener el IMEI o MEID de esta manera:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
String imei = tm.getImei(); // Requires permission READ_PHONE_STATE
serial = imei == null ? tm.getMeid() : imei; // Requires permission READ_PHONE_STATE
} else {
serial = tm.getDeviceId(); // Requires permission READ_PHONE_STATE
}