Voluntad TelephonyManger.getDeviceId () devuelven Identificación del dispositivo para tabletas como Galaxy Tab ...?

StackOverflow https://stackoverflow.com/questions/3802644

  •  25-09-2019
  •  | 
  •  

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 ???

¿Fue útil?

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
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top