2017-03-27 2 views
0

アンドロイドデバイスのUUIDを取得したいので、私はTelephonyManager.getDeviceId()メソッドでUUIDを取得しようとしていました。しかし、0(000000000000など)だけで作成されたデバイスIDを返します。なぜTelephonyManager.getDeviceId()はゼロだけで作られたデバイスIDを返しますか?

ここに私のコードです。多くの行のコードを使用してユーザー権限READ_PHONE_STATEを取得しました。

パブリッククラスMainActivityは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(); 
} 

} IMEI番号を持っていないエミュレータとしてエミュレータに0を返す

+0

エミュレータで実行していますか? – Ragini

+0

getDeviceId()GSM用のIMEI、CDMA電話用のMEIDまたはESNなど、固有のデバイスIDを返します。デバイスIDが使用できない場合はnullを返します。 これはgetDeviceID()メソッドの動作ですが、エミュレータでアプリケーションをテストしていることを知りたいですか? –

+0

ありがとうございました。はい、エミュレータでテストしました:) – MagmaTart

答えて

0

はいに延びています。 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()); 

これはあなたのユニークなDEVICEIDを与えます。

関連する問題