14

내 최고의 질문 중 하나를 보았습니다 Is there a unique Android device ID?MarshMallow 경고 후 고유 한 Android 기기 ID "기기 식별자를 가져 오지 않는 것이 좋습니다"?

고유 ID를 얻기 위해 다음 코드를 사용했습니다. 장치 식별자를 얻을에는 getString을 사용하여

하지 않는 것이 좋습니다 :

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

그러나 나는 다음과 같은

tm.getDeviceId();

Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID); 에 가져가에 대한 몇 가지 경고를 얻고있다 .

높은 값 사기 방지 및 고급 전화 통신 사용 사례 이외의 다른 경우에는 기기 식별자를 사용하지 않는 것이 좋습니다. 광고 유스 케이스의 경우 AdvertisingIdClient $ Info # getId를 사용하고 분석의 경우 InstanceId # getId를 사용하십시오.

해결책이 있습니까? 해로운 것이거나 다른 것입니까?

+2

고유 식별자로 IMEI 번호를 사용할 수 있습니다. 그리고 이것은 단지 해커의 뿌리가 휴대폰으로 지금은 장치 ID를 변경으로 경고입니다. –

+0

복원 공장 후에 변경됩니다. 나는 그것을 원하지 않는다. –

+0

아니요, IMEI 어떤 경우에도 변경되지 않습니다. –

답변

-1

이 경고를 실제로 "해결할"수는 없습니다.

그러나 원하는 경우 @SuppressLint ("HardwareIds")를 추가하여 경고를 비활성화 할 수 있습니다.

이 경고를 통해 린트는 게시해야하는지 여부를 다시 생각할 수있는 기회를 제공합니다.