1 min read
Choose icon
Choose icon SDK allows users to select the app icon on a configuration screen accessible via deeplink.
Without any customisation, Choose icon screen looks like this:
Start using Choose icon SDK
To start using it, you need to:
- Add the module to your
build.gradleimplementation ("com.poqstudio:content.icon:$VERSION_NAME") - Add your new icons to your resource folder
- Create an activity-alias cloning the default icon in your
AndroidManifest.xml - Create activity-aliases for each icon variant in your
AndroidManifest.xml
(all the activity-aliases need to have the same intent-filter as the original Activity)
<application <!-- android:icon="@mipmap/ic_launcher" remove from here --> ... > <activity android:name="com.poqstudio.app.platform.presentation.splash.view.SplashActivity" android:enabled="true" <!-- enabled by default --> android:exported="true" android:icon="@mipmap/ic_launcher" ... > <intent-filter> ... </intent-filter> </activity> <activity-alias android:name="com.poqstudio.app.platform.presentation.splash.view.DefaultCloneAlias" android:enabled="false" <!-- disabled by default --> android:exported="true" android:icon="@mipmap/ic_launcher" android:targetActivity="com.poqstudio.app.platform.presentation.splash.view.SplashActivity" ... > <intent-filter> ... </intent-filter> </activity-alias> <activity-alias android:name="com.poqstudio.app.platform.presentation.splash.view.VariantAlias1" android:enabled="false" <!-- disabled by default --> android:exported="true" android:icon="@mipmap/ic_launcher_variant_1" android:targetActivity="com.poqstudio.app.platform.presentation.splash.view.SplashActivity" ... > <intent-filter> ... </intent-filter> </activity-alias> <activity-alias android:name="com.poqstudio.app.platform.presentation.splash.view.VariantAlias2" android:enabled="false" <!-- disabled by default --> android:exported="true" android:icon="@mipmap/ic_launcher_variant_2" android:targetActivity="com.poqstudio.app.platform.presentation.splash.view.SplashActivity" ... > <intent-filter> ... </intent-filter> </activity-alias> </application>- Add your icons to
ChooseIconSettings:chooseIconSettings = {ChooseIconSettings(defaultAppIcon = AppIcon.Default(iconId = R.mipmap.ic_launcher,name = "Default",alias = "com.poqstudio.app.platform.presentation.splash.view.SplashActivity",cloneAlias = "com.poqstudio.app.platform.presentation.splash.view.DefaultCloneAlias",),variantAppIconList = listOf(AppIcon.Variant(iconId = R.mipmap.ic_launcher_variant_1,name = "Variant 1",alias = "com.poqstudio.app.platform.presentation.splash.view.VariantAlias1",),AppIcon.Variant(iconId = R.mipmap.ic_launcher_variant_2,name = "Variant 2",alias = "com.poqstudio.app.platform.presentation.splash.view.VariantAlias2",),),)}
Choose icon SDK is composed of this module:
How to remove an icon
Once an activity alias is enabled by a user, you cannot delete it or those users will loose the icon to the app. To remove an icon, you need to:
- In your
AndroidManifest.xml, on the activity alias to be hidden, replace the icon with the default one. User's icon with that activity alias enabled will be replaced by the default one. - On the
AppIcon.Variantto be hidden, setisVisible = falsewhen you provided viaChooseIconSettings - Delete the icon resource
Even when you cannot delete an activity alias, you can reuse it for similar campaings (i.e.: Halloween activity alias can be reused year after year). To do so, you need to add the new icon to the activity alias and set isVisible = true.
Koin modules
Choose icon dependencies are injected using Koin. When you include the module to your build.gradle, the Koin modules are included automatically. This is the Koin module included:
chooseIconModule
Deep links
Choose icon SDK provides this deep link:
ChooseIcon(/app-icon): it opensChooseIconActivity