2017-03-27 1 views
0

Je voulais obtenir l'UUID de mon périphérique Android, donc j'essayais d'obtenir UUID avec la méthode TelephonyManager.getDeviceId(). Mais il renvoie l'ID de périphérique qui a fait avec seulement 0s (comme 000000000000).Pourquoi TelephonyManager.getDeviceId() renvoie-t-il un ID de périphérique composé uniquement de zéros?

Voici mon code. De nombreuses lignes de code ont été utilisées pour obtenir l'autorisation utilisateur READ_PHONE_STATE.

MainActivity public class étend AppCompatActivity {

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    TextView tv = (TextView)findViewById(R.id.textview); 

    if(Build.VERSION.SDK_INT == Build.VERSION_CODES.M){ 
     int permissionResult = checkSelfPermission(Manifest.permission.READ_PHONE_STATE); 
     if(permissionResult == PackageManager.PERMISSION_DENIED){ 
      if(shouldShowRequestPermissionRationale(Manifest.permission.READ_PHONE_STATE)) { 
       AlertDialog.Builder dialog = new AlertDialog.Builder(MainActivity.this); 
       dialog.setTitle("Need Permission") 
         .setMessage("This needs to READ_PHONE_STATE Permission. Continue?") 
         .setPositiveButton("Yes", new DialogInterface.OnClickListener() { 
          @Override 
          public void onClick(DialogInterface dialog, int which) { 
           if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { 
            requestPermissions(new String[]{Manifest.permission.READ_PHONE_STATE}, 1000); 
           } 
          } 
         }) 
         .setNegativeButton("No", new DialogInterface.OnClickListener() { 
          @Override 
          public void onClick(DialogInterface dialog, int which) { 
           Toast.makeText(MainActivity.this, "Canceled", Toast.LENGTH_LONG).show(); 
          } 
         }) 
         .create() 
         .show(); 
      } 
      else{ 
       requestPermissions(new String[]{Manifest.permission.READ_PHONE_STATE}, 1000); 
      } 
     } 
     else{ 
      tv.setText(GetDeviceUUID(getBaseContext())); 
     } 
    } 
    tv.setText(GetDeviceUUID(getBaseContext())); 
} 

public static String GetDeviceUUID(Context mContext){ 
    */ 
    TelephonyManager mgr = (TelephonyManager)mContext.getSystemService(Context.TELEPHONY_SERVICE); 
    final String ID = mgr.getDeviceId(); 
    return ID; 
} 

@Override 
public Context getBaseContext() { 
    return super.getBaseContext(); 
} 

}

+0

Courez-vous sur l'émulateur? – Ragini

+0

getDeviceId() Renvoie l'ID de périphérique unique, par exemple, l'IMEI pour GSM et le MEID ou ESN pour les téléphones CDMA. Renvoie la valeur null si l'identifiant de l'appareil n'est pas disponible. Ceci est le comportement de la méthode getDeviceID(), mais je veux savoir tester l'application sur l'émulateur? –

+0

Merci pour votre aide. Oui j'étais test sur l'émulateur :) – MagmaTart

Répondre

0

Oui qui retourne 0 pour émulateurs comme émulateur ne dispose pas d'un numéro IMEI. Utilisez cette option pour générer le deviceId:

final String tmDevice, tmSerial, androidId; 
       tmDevice = "" + tm.getDeviceId(); 
       tmSerial = "" + tm.getSimSerialNumber(); 
       androidId = "" + android.provider.Settings.Secure.getString(getAppContext().getContentResolver(), 
         android.provider.Settings.Secure.ANDROID_ID); 

       UUID deviceUuid = new UUID(androidId.hashCode(), ((long) tmDevice.hashCode() << 32) | tmSerial.hashCode()); 

Cela vous donnera un deviceId unique.