Est-ce dispositif retour TelephonyManger.getDeviceId () id pour les tablettes comme Galaxy Tab ...?

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

  •  25-09-2019
  •  | 
  •  

Question

Je veux obtenir l'ID du périphérique qui sera unique pour chaque appareil Android. Je développe actuellement un dispositif de tablette. Vous voulez obtenir id unique de l'appareil et stocker les valeurs correspondantes ...

Alors, je veux savoir si les dispositifs de Tablet renvoie une valeur si j'utilise TelephonyManager.getDeviceId () ... ??? Ou est-il une autre valeur qui est unique pour chaque appareil ???

Était-ce utile?

La solution

est pas une double question. Comme il se trouve, les CTS de Google exigent que getPhoneType de TelephonyManager doit être sans pareil et GetDeviceID de TelephonyManager doit être nul pour les appareils non téléphoniques.

Donc, pour obtenir IMEI, s'il vous plaît essayer d'utiliser:

String imei = SystemProperties.get("ro.gsm.imei")

Malheureusement, SystemProperties est une classe non-public dans le système d'exploitation Android, ce qui signifie qu'il est pas accessible au public à des applications régulières. Essayez de regarder ce poste à l'aide d'y accéder: Où est android.os.SystemProperties

Autres conseils

TelephonyManger.getDeviceId () Renvoie l'ID unique de l'appareil, par exemple, l'IMEI pour le GSM et le MEID ou ESN pour les téléphones CDMA.

final TelephonyManager mTelephony = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);            
String myAndroidDeviceId = mTelephony.getDeviceId(); 

Mais je recommande d'utiliser:

Settings.Secure.ANDROID_ID qui renvoie l'ID applications en tant que chaîne hexadécimale 64 bits unique.

    String   myAndroidDeviceId = Secure.getString(getApplicationContext().getContentResolver(), Secure.ANDROID_ID); 

Parfois TelephonyManger.getDeviceId () renvoie null, afin d'assurer un identifiant unique que vous utiliserez cette méthode:

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;
}

Depuis Android 8 tout a changé. Vous devez utiliser Build.getSerial(), pour obtenir le numéro de série de l'appareil et ajouter le READ_PHONE_STATE d'autorisation.

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
}

Et obtenir le IMEI ou MEID cette façon:

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
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top