program tip

Secure.ANDROID_ID는 각 장치마다 고유합니까?

radiobox 2020. 11. 21. 14:16
반응형

Secure.ANDROID_ID는 각 장치마다 고유합니까?


이 전화를 사용하고 있습니다.

Secure.getString(getApplicationContext().getContentResolver(), Secure.ANDROID_ID);

장치의 UID를 얻으려면. 그래도 여러 장치에서 동일한 ID를 얻는 것 같습니다. 이것이 가능해야합니까?

문제의 ID는 9774d56d682e549c이며이 ID를 반환하는 여러 기기에 문제가있는 것 같습니다. http://code.google.com/p/android/issues/list?cursor=10603&updated=10603&ts=1295993403


스레드를 확인하십시오 . 그러나 "초기화시 변경 가능"으로 문서화되어 있으므로주의해야합니다. 자신의 책임하에 사용하고 루팅 된 전화에서 쉽게 변경할 수 있습니다. 일부 제조업체는 자신의 휴대 전화가 중복되는 번호를 갖는 문제를 가지고있는 것처럼 또한 그것은 나타납니다 스레드 . 당신이하려는 일에 따라 아마도 이것을 UID로 사용하지 않을 것입니다.


Android O에서는 ANDROID_ID의 동작이 변경됩니다. ANDROID_ID는 휴대 전화의 사용자별로 앱마다 다릅니다.

출처 : https://android-developers.googleblog.com/2017/04/changes-to-device-identifiers-in.html

안드로이드 ID

O에서 Android ID (Settings.Secure.ANDROID_ID 또는 SSAID)는 기기의 각 앱 및 각 사용자에 대해 다른 값을 갖습니다. 기기 범위 식별자가 필요한 개발자는 광고 ID와 같은 재설정 가능한 식별자를 대신 사용하여 사용자에게 더 많은 제어 권한을 제공해야합니다. 광고 ID는 광고 추적을 제한하는 사용자 용 설정도 제공합니다.

또한 Android O에서 :

  • ANDROID_ID 값은 패키지 이름과 서명 키가 같으면 패키지 제거 / 재설치시 변경되지 않습니다. 앱은이 값을 사용하여 재설치시 상태를 유지할 수 있습니다.
  • 이전 버전의 Android를 실행하는 기기에 앱을 설치 한 경우 기기를 Android O로 업데이트 할 때 앱을 제거하고 다시 설치하지 않는 한 Android ID는 동일하게 유지됩니다.
  • Android ID 값은 기기가 초기화 된 경우 또는 서명 키가 제거 및
    재설치 이벤트 사이에 순환하는 경우에만 변경됩니다 .
  • 이 변경은 Google Play 서비스 및 광고 ID와 함께 배송되는 기기 제조업체에만 필요합니다. 다른 기기 제조업체는 재설정 가능한 대체 ID를 제공하거나 ANDROID ID를 계속 제공 할 수 있습니다.

따라서 장치 자체에 고유 한 것을 원한다면 충분 TM.getDeviceId() 해야 합니다.

다음은 Telephony Manager ID를 얻는 방법을 보여주는 코드입니다. 사용중인 Android 기기 ID는 공장 설정에서 변경 될 수 있으며 일부 제조업체는 고유 ID를 제공하는 데 문제가 있습니다.

TelephonyManager tm = 
        (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE);
String androidId = Secure.getString(this.getContentResolver(), Secure.ANDROID_ID);
Log.d("ID", "Android ID: " + androidId);
Log.d("ID", "Device ID : " + tm.getDeviceId());

다음 TelephonyManager을 사용하여 권한을 가져야합니다.

<uses-permission android:name="android.permission.READ_PHONE_STATE" />

이에 대해 몇 가지 읽었으며 안타깝게도 개별 기기를 고유하게 식별하는 데 ANDROID_ID를 사용해서는 안됩니다.

Android 규정 준수 요구 사항에 적용되지 않는 것으로 보이므로 제조업체는 '모델'ID 등으로 더 많이 사용하는 일부를 포함하여 선택한 방식으로 구현하는 것 같습니다.

또한 제조업체가 UUID (예 : UUID)로 만들기 위해 생성기를 작성했다고하더라도 공장 초기화에서 살아남을 보장은 없습니다.


여기에 대체 솔루션 인 광고 ID를 나열하십시오.

https://support.google.com/googleplay/android-developer/answer/6048248?hl=en

위 링크에서 복사 :

광고 ID는 Google Play 서비스에서 제공하는 광고용으로 사용자가 재설정 할 수있는 고유 한 ID입니다. 사용자에게 더 나은 제어 기능을 제공하고 개발자에게 앱으로 계속 수익을 창출 할 수있는 간단한 표준 시스템을 제공합니다. 이를 통해 사용자는 Google Play 앱 내에서 식별자를 재설정하거나 개인 맞춤 광고 (이전의 관심 기반 광고)를 선택 해제 할 수 있습니다.

제한 사항은 다음과 같습니다.

  1. Google Play 지원 기기에만 해당됩니다.
  2. 개인 정보 정책: https://support.google.com/googleplay/android-developer/answer/113469?hl=en&rd=1#privacy

//Fields
String myID;
int myversion = 0;


myversion = Integer.valueOf(android.os.Build.VERSION.SDK);
if (myversion < 23) {
        TelephonyManager mngr = (TelephonyManager) 
getSystemService(Context.TELEPHONY_SERVICE);
        myID= mngr.getDeviceId();
    }
    else
    {
        myID = 
Settings.Secure.getString(getApplicationContext().getContentResolver(), 
Settings.Secure.ANDROID_ID);
    }

예, Secure.ANDROID_ID는 각 장치마다 고유합니다.

참고 URL : https://stackoverflow.com/questions/4799394/is-secure-android-id-unique-for-each-device

반응형