Android 6 이상에서는 Wi-Fi 서비스 제공업체 및 패킷 분석업체가 네트워크 요청의 Wi-Fi 스택을 통해 기기의 공장 출고 시 MAC 주소를 가져올 수 없도록 제한되었습니다. Android 10부터는 기기 식별자(ID) 액세스를 독점 권한 수준이 있는 앱으로 제한하는 추가 제한이 적용되었습니다. 이렇게 하면 다음과 같은 기기 ID를 보호할 수 있습니다.
- 전화통신 IMEI, MEID, ESN 및 IMSI 번호
- 빌드, SIM 또는 USB 일련번호
기기 ID에 액세스 가능한 사용자
앱이 Android 9 이하를 타겟팅하는 경우에도 기기 ID가 모든 Android 10 기기에서 제한됩니다. 기기 ID에 액세스할 수 있는 주체는 다음과 같습니다.
- 기본 SMS 앱
Manifest.permission
클래스의READ_PRIVILEGED_PHONE_STATE
권한과privapp-permission.xml
파일의 허용 목록을 모두 보유한 앱. 이러한 앱은priv-app
디렉터리에도 로드되어야 합니다.- UICC 이동통신사 권한에서 정의된 이동통신사 권한을 보유한 앱
Manifest.permission
클래스에서 부여된READ_PHONE_STATE
권한이 있는 기기 소유자 또는 프로필 소유자. (허용 목록에 추가할 필요 없음)
권한 있는 패키지에 액세스
패키지는 기기 ID에 액세스하는 권한이 있어야 합니다. 패키지는 Manifest.permission
클래스의
READ_PRIVILEGED_PHONE_STATE
권한을 보유하고 privapp-permission.xml
파일에서 허용되어야 합니다. 허용 목록 프로세스에 관한 자세한 내용은 독점 권한 허용을 참고하세요.
권한 없는 패키지의 고유 ID를 가져오는 방법에 관한 자세한 내용은 일반적인 사용 사례 및 사용하기 적합한 식별자를 참고하세요.
제한된 기기 ID 및 무작위 MAC 주소
기기 ID를 추가로 제한하기 위해 Android 10을 실행하는 모든 기기는 프로브 및 관련 요청 모두의 무작위 MAC 주소를 기본적으로 전송하며 SSID별로 다른 무작위 MAC 주소가 있어야 합니다. 클라이언트 모드, 유연한 액세스 포인트(AP) 또는 Wi-Fi Direct 사용 사례에는 기기 공장 출고 시 MAC 주소를 사용하지 마세요. 이는 권한 있는 앱이 아닌 공개적으로 액세스 가능한 API에서 숨겨진 상태로 유지되어야 합니다. 공장 출고 시 MAC 주소를 요구하는 권한 있는 앱은 LOCAL_MAC_ADDRESS
권한을 보유해야 합니다.
사용자는 원하는 경우 각 SSID에 할당된 기본 무작위 MAC 주소를 유지할 수 있습니다. 이 옵션은 설정 > 네트워크 세부정보의 개인정보 보호에서 볼 수 있습니다. 무작위 MAC 주소 획득에 관한 자세한 내용은 무작위 MAC 주소를 참조하세요.

기기 ID API를 호출하는 앱
기기 ID API를 호출하는 앱은 Android 10 요구사항을 충족해야 합니다. 그렇지 않으면 기기 ID에 액세스하려고 할 때 다음과 같은 내용이 반환됩니다.
- Android 10을 타겟팅하는 앱
SecurityException
이 기기 ID API에서 발생합니다.- Android 9 이하를 타겟팅하는 앱
READ_PHONE_STATE
권한이 있으면null
응답 또는 자리표시자 데이터가 반환됩니다.- 권한이 없으면 기기 ID API는 호출된 메서드 이름과 호출 앱이 요청된 ID 액세스를 위한 요구사항을 충족하지 않는다는 표시 내용이 포함된
SecurityException
을 발생시킵니다.
변경할 수 없는 기기 ID에 관한 자세한 내용은 재설정할 수 없는 기기 식별자 및 고유 식별자 관련 권장사항을 참고하세요.
테스트
앱이 기기 일련번호(및 적용되는 경우 IMEI/MEID, SIM 일련번호 및 구독자 ID)에 액세스할 수 없어야 합니다. 이러한 ID에 액세스하는 권한을 보유한 앱은 기기 ID에 액세스 가능한 사용자에 나열된 기준 중 하나도 충족해야 합니다.