Kotlin

[Kotlin] 앱 정보 가져오기 - App Name & App Icon 가져오기

eulBlue 2023. 11. 25. 20:57

📱테스트 환경

Samsung Galaxy Android 13 • Android 10


applicationInfo & packageManager

01. getAppInfo.kt 파일 생성 ( utils/getAppInfo.kt )

02. 먼저 getAppName 함수 생성

fun getAppName(context: Context): String {
    val applicationInfo = context.applicationInfo
    val stringId = applicationInfo.labelRes
    return if (stringId == 0) applicationInfo.nonLocalizedLabel.toString() else context.getString(stringId)
}

사실 함수를 따로 분리하지 않을 거라면 context 를 따로 받지 않아도 상관없지만 분리할수 있는 부분은 최대한 분리한다.

중요한 함수는 applicationInfo 인데 현재 애플리케이션의 정보를 가져온다.

labelRes 가 0 이라면 nonLocalizedLabel 에서 문자열로 반환해서 가져오고, 아니라면 애플리케이션 환경정보에서 가져온다.

val appName = findViewById<TextView>(R.id.appName)
appName.text = getAppName(this)

나는 이런식으로 화면에서 TextView 의 ID 값을 가져와서 애플리케이션 이름을 넣어줬다. 앱의 헤더 부분에 앱 이름을 표기하는데

사용하면 참 좋을 것 같다.

03. getAppIcon 함수 생성

fun getAppIcon(context: Context): Drawable? {
    return try {
        context.packageManager.getApplicationIcon(context.packageName)
    } catch (e: PackageManager.NameNotFoundException) {
        null
    }
}

이 함수 또한 분리하지 않을꺼라면 context 를 받아올 필요는 없긴 하다.

packageManager 가 중요한데 packageName 을 가지고 현재 애플리케이션의 아이콘을 가져온다.

try catch 를 이용해서 예외처리를 해주는데 나 같은 경우에는 못받아오면 다른 대체 이미지를 보여주기 때문에 null 을 반환해서

다른 이미지를 보여주고 있지만 필요하다면 예외처리를 해주는건 항상 좋다.