Android Compose中Google内购显示时状态栏与导航栏图标异常求助
Google应用内购界面导致的SystemUI异常修复方案
问题本质:Google内购的结算界面是系统级独立页面,会强制修改状态栏、导航栏的颜色配置,直接覆盖你通过System UI Controller设置的参数,且关闭内购界面后不会自动恢复原有配置。
修复思路:提前保存当前SystemUI状态,在内购流程结束后手动恢复配置。
具体实现:
- 先记录当前的状态栏图标亮度、状态栏/导航栏颜色:
val systemUiController = rememberSystemUiController() // 保存初始状态 val initialStatusBarDarkIcons = systemUiController.statusBarDarkIcons val initialNavBarColor = systemUiController.navigationBarColor val initialStatusBarColor = systemUiController.statusBarColor - 监听内购流程的结束回调(比如
PurchasesUpdatedListener),在回调中恢复SystemUI设置:override fun onPurchasesUpdated(result: BillingResult, purchases: MutableList<Purchase>?) { // 先处理购买结果逻辑 // ... // 恢复SystemUI配置,确保在主线程执行 runOnUiThread { systemUiController.setStatusBarColor( color = initialStatusBarColor, darkIcons = initialStatusBarDarkIcons ) systemUiController.setNavigationBarColor(initialNavBarColor) } }
- 先记录当前的状态栏图标亮度、状态栏/导航栏颜色:
额外提醒:
- 所有SystemUI修改操作必须在主线程执行,避免跨线程异常
- 如果是纯Compose环境,可以用
LaunchedEffect配合回调触发恢复操作,保证在Compose的UI线程执行 - 不同机型的内购界面SystemUI行为可能有差异,建议多机型验证
内容的提问来源于stack exchange,提问作者mk_369
相关产品推荐
相关产品推荐

