Android 12从通知启动应用时启动屏图标不显示
问题描述
我正在使用Android 12启动屏API,从启动器打开应用时启动屏图标显示正常,但从通知打开应用时仅显示启动屏背景,不显示图标或动画图标。
当前配置
我的Activity在AndroidManifest.xml中使用的v31/styles.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>
我还尝试了另一个主题,但没有效果:
<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>
解决思路
- 检查通知Intent标记:确保通知触发的Intent没有设置
FLAG_ACTIVITY_CLEAR_TASK这类可能干扰启动屏逻辑的标记,同时确认目标Activity和启动器打开的是同一个,主题配置正确。 - 确认主题绑定关系:若使用
Theme.SplashScreen作为父主题,需直接在AndroidManifest.xml中将该主题设置给目标Activity,避免间接引用导致属性失效;同时检查v31/styles.xml是否因资源适配问题未被正确加载。 - 手动初始化启动屏:在目标Activity的
onCreate方法中显式调用启动屏API,确保所有启动路径都触发初始化:
Java版本:override fun onCreate(savedInstanceState: Bundle?) { val splashScreen = installSplashScreen() super.onCreate(savedInstanceState) // 后续业务初始化逻辑 }@Override protected void onCreate(Bundle savedInstanceState) { SplashScreen splashScreen = SplashScreen.installSplashScreen(this); super.onCreate(savedInstanceState); // 后续业务初始化逻辑 } - 验证PendingIntent配置:创建通知的
PendingIntent时,使用FLAG_UPDATE_CURRENT或Android 12+推荐的FLAG_IMMUTABLE,避免Intent实例异常导致启动流程出错。 - 检查图标资源有效性:确认
@drawable/splash_screen_icon符合Android 12启动屏资源格式要求,且在通知启动场景下没有加载失败的情况。
内容的提问来源于stack exchange,提问作者S01ds
相关产品推荐
相关产品推荐

