개발/안드로이드

(Android) Dynamic App Icon

DinoDev 2024. 2. 21. 23:40
728x90
반응형

기획자가 가끔 크리스마스, 한글날, 어린이날 과 같이 특별한 기념일에 앱 아이콘을 독특하게 바꾸고 싶은 요구사항을 전달하는 경우가 있습니다. 보통은 이렇게 특별한 날만 바꾸는 건 어렵고 앱을 업데이트해야만 아이콘을 변경할 수 있습니다.

 

하지만 activity-alias를 사용하게 된다면 앱 업데이트를 하지 않고 동적으로 앱 아이콘을 변경할 수 있습니다.

 

activity-alias

activity-alias는 AndroidManifest.xml에서 사용할 수 있는 태그로 기존에 선언된 <activity>에 대해 별칭을 제공하는 기능입니다. 이것을 사용하면 하나의 Activity에 여러개의 진입점을 생성할 수 있고, 다양한 인텐트 필터(<intent-filter>)나 메타데이터(<meta-data>)를 적용하여 동일한 Activity를 다양한 방식으로 사용할 수 있습니다.

<activity-alias android:enabled=["true" | "false"]
                android:exported=["true" | "false"]
                android:icon="drawable resource"
                android:label="string resource"
                android:name="string"
                android:permission="string"
                android:targetActivity="string" >
    ...
</activity-alias>

 

activity-alias에 다양한 속성들이 있는데 icon을 사용해서 앱 업데이트 없이 동적으로 앱 아이콘을 변경할 수 있습니다.

activity-alias 활성화 방법

val packageManager = context.packageManager

packageManager.setComponentEnabledSetting(
    ComponentName(context, "com.example.MainActivity2"), // <- 활성화 Activity name
    PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
    PackageManager.DONT_KILL_APP
)

packageManager.setComponentEnabledSetting(
    ComponentName(context, "com.example.MainActivity"), // <- 비활성화 Activity name
    PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
    PackageManager.DONT_KILL_APP
)

 

위 코드처럼 PackageManager.setComponentEnabledSetting() 함수를 사용해서 Activity를 활성화, 비활성화를 처리하고 이렇게 하면 활성화 된 activity-alias에 지정한 앱 아이콘으로 변경되게 됩니다.

 

 

예제코드는 여기서 확인할 수 있습니다

https://github.com/sjjeong/DynamicAppIcon

 

GitHub - sjjeong/DynamicAppIcon: Dynamic app icon change sample project

Dynamic app icon change sample project. Contribute to sjjeong/DynamicAppIcon development by creating an account on GitHub.

github.com

 


블로그 글에 대해 궁금한 점이 있다면 아래 카카오톡 오픈채팅에 들어와서 질문해주세요

 

Android Kotlin Compose QnA

 

open.kakao.com

 

728x90
반응형