I am using the Android 12 splash screen API and while the splash screen icon shows without issue when opening the app from the launcher, opening the app from a notification only displays the splash screen background, without the icon or animated icon.
Here's the theme in v31/styles.xml that my activity uses in AndroidManifest.xml:
<style name="MainActivityTheme" parent="AppTheme">
<item name="android:windowSplashScreenBackground">@color/splash_screen_background</item>
<item name="android:windowSplashScreenAnimatedIcon">@drawable/splash_screen_icon</item>
</style>
I also tried using this other theme, but to no avail:
<style name="SplashScreenTheme" parent="Theme.SplashScreen">
<item name="android:windowSplashScreenBackground">@color/splash_screen_background</item>
<item name="android:windowSplashScreenAnimatedIcon">@drawable/splash_screen_icon</item>
<item name="postSplashScreenTheme">@style/MainActivityTheme</item>
</style>
Any idea to make the icon visible from a notification is welcome. Thanks in advance!
After struggling with this for a while, I found out that this is the intended behavior according to the Android team, although it's not clear exactly why, and people keep complaining about it. So I started looking into the new
splashScreenStyleoption in order to work around that limitation.Basically, I just create a new activity that forwards the pending intent from the notification to the originally intended activity while requesting the splash screen icon to display.
Create
NotificationLaunchActivitywith theme@style/Theme.AppCompat.TranslucentIn the
onCreate()of this activity:Replace
MainActivity.classwithNotificationLaunchActivity.classas the PendingIntent of your existing notification builders.And voila, simple as that. Tested on a handful of Android 12 devices and works as expected.
NOTE: As far as I can tell, the same can be applied to display the splash screen icon when opening the app from deep links, system intents, as well as from direct share targets.