14

En iyi sorularımdan birini gördüm Is there a unique Android device ID?MarshMallow uyarıldıktan sonra benzersiz Android Aygıt Kimliği uyarısı "aygıt tanımlayıcılarını al önerilmez" uyarısı?

Benzersiz Kimlik almak için aşağıdaki kodu kullandım. cihaz tanımlayıcıları almak için getString kullanma

önerilmez:

public static String getDeviceId(Activity context) { 

    PermissionsChecker checker = new PermissionsChecker(context); 

    if (checker.lacksPermissions(Manifest.permission.READ_PHONE_STATE)) 
     PermissionsActivity.startActivityForResult(context, 0, REQUIRED_PERMISSION); 
    else { 
     TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); 

     final String tmDevice = tm.getDeviceId(); 
     final String androidId = Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID); 

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

     return deviceUuid.toString(); 
    } 
    return null; 
} 

Ama şöyle

tm.getDeviceId();

ve

Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID); üzerinde vurgulu bazı uyarı alıyorum . Aygıt tanımlayıcılarını kullanmak, yüksek değerde sahteciliği önleme ve gelişmiş telefon kullanım durumları dışında tavsiye edilmez. Kullanım koşullarında reklamları için AdvertisingIdClient $ Info # getId ve analitik için InstanceId # getId kullanın.

bir çözüm var mı? Zararlı mı yoksa başka bir şey mi?

+2

IMEI numarasını benzersiz tanımlayıcı olarak kullanabilirsiniz. Ve bu şimdi sadece bir gün hacker kök telefonları olarak uyarı ve cihaz kimliğini değiştirmek. –

+0

Geri yükleme fabrikadan sonra değişecektir. Bunu istemiyorum. –

+0

Hayır, IMEI Her durumda değişmeyecek. –

cevap

-1

Bu uyarıyı gerçekten "çözemez".

Ancak isterseniz, @SuppressLint ("HardwareIds") ekleyerek uyarıyı devre dışı bırakabilirsiniz;

Lütfen bu uyarı ile Lint'in yayınlamanız gerekip gerekmediğini tekrar gözden geçirme fırsatı sunduğunu unutmayın.