본문 바로가기
안드로이드 코틀린

[Kotlin][Android] 핸드폰 기기 단말 정보 가져오기

by teamnova 2021. 8. 2.

안녕하세요.

핸드폰 기기정보가 필요한 경우는 실제 서비스를 고려할 때 종종 있습니다.

 

안드로이드 Q 버전부터는 더 이상 '사용자가 재설정할 수 없는' 디바이스 식별자를 제공하지 않습니다. 타깃 SDK 버전과 관계없이 DeviceID, IMEI, MEID, Build.Serial 등의 값을 사용할 수 없습니다. 만일 이러한 디바이스 식별자를 사용하고 있다면, 다른 방법으로 전환해야 합니다. 디바이스 식별자를 사용하고 있는 방식에 따라 마이그레이션 작업에 많은 시간이 소요될 수 있기 때문에 주의가 필요합니다.

 

안드로이드 플랫폼에는 고유 식별자로 사용할 수 있는 값이 여럿 있습니다. 자세한 사항은 아래 문서를 참고하시면 좋을 거 같습니다.

https://developer.android.com/training/articles/user-data-ids?hl=ko 

 

고유 식별자 권장사항  |  Android 개발자  |  Android Developers

이 문서에서는 사용 사례에 따라 앱에 적합한 식별자를 선택하는 방법을 설명합니다. Android 권한과 관련된 일반적인 내용은 권한 개요를 참조하세요. Android 권한을 사용하기 위한 구체적인 권장

developer.android.com

 

고유 식별자의 범위는 대략적으로 다음과 같이 분류됩니다. 

 

단일 앱 - 한 앱에서 확인한 식별자는 해당 앱에서만 동일하게 유지됩니다. 앱 A에서 확인한 식별자는 앱 B에서 확인한 식별자와 다릅니다.

앱 그룹 - 한 앱에서 확인한 식별자는 미리 정의된 몇몇 앱 사이에서 동일하게 유지됩니다. 예를 들어 앱 서명키 기준으로 앱 그룹을 지정할 수 있습니다. 앱 A에서 확인한 식별자는 동일 키로 서명된 앱 B에서 확인한 식별자와 동일합니다. 서명 키가 다른 앱 C에서는 값이 달라집니다. 

디바이스 - 한 앱에서 확인한 식별자는 동일 디바이스에 있는 모든 앱에서 동일하게 유지됩니다. 동일 디바이스에 설치된 앱 A, B, C 모두 동일한 식별자 값을 갖습니다.

 

서론이 길었지만 앞서 설명했던 정보를 클래스로 만들어서 사용하면 편리해 공유해보도록 하겠습니다.

 

결과를 확인하기 위해 만든 화면

 

저는 디바이스의 고유 id, 모델, OS, App Version을 클래스를 통해 가져와 보도록 하겠습니다.

제가 만들어 놓은 코드는 아래 스틱코드에 업로드 했으니 필요하신 분들은 저장하여 사용하시면 될 거 같습니다.

https://stickode.com/code.html?fileno=10693 

 

STICKODE - 코드 등록하기

스틱코드에서 개발에 필요한 전세계의 모든 코드들을 찾아보세요! Java, Android, Kotlin, PHP 등의 수 많은 언어와 플랫폼을 지원합니다.

stickode.com

 

위 클래스를 아래 처럼 불러와 사용하였습니다.

class DeviceInfo : AppCompatActivity() {
    lateinit var txtID: TextView
    lateinit var txtModel: TextView
    lateinit var txtOs: TextView
    lateinit var txtVersion: TextView

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_device_info)

        val deviceInformation = DeviceInformation(this)
        Log.d("Tag","deviceInformation 확인 :"+deviceInformation.getDeviceId())

        txtID = findViewById(R.id.device_id)
        txtModel = findViewById(R.id.device_model)
        txtOs = findViewById(R.id.device_os)
        txtVersion = findViewById(R.id.app_version)

        txtID.setText(deviceInformation.getDeviceId())
        txtModel.setText(deviceInformation.getDeviceModel())
        txtOs.setText(deviceInformation.getDeviceOs())
        txtVersion.setText(deviceInformation.getAppVersion())

    }
}

 

이처럼 사용하시면 아래 사진처럼 결과를 얻을 수 있습니다