You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Compose中Google内购显示时状态栏与导航栏图标异常求助

Google应用内购界面导致的SystemUI异常修复方案
  • 问题本质:Google内购的结算界面是系统级独立页面,会强制修改状态栏、导航栏的颜色配置,直接覆盖你通过System UI Controller设置的参数,且关闭内购界面后不会自动恢复原有配置。

  • 修复思路:提前保存当前SystemUI状态,在内购流程结束后手动恢复配置。

  • 具体实现:

    1. 先记录当前的状态栏图标亮度、状态栏/导航栏颜色:
      val systemUiController = rememberSystemUiController()
      // 保存初始状态
      val initialStatusBarDarkIcons = systemUiController.statusBarDarkIcons
      val initialNavBarColor = systemUiController.navigationBarColor
      val initialStatusBarColor = systemUiController.statusBarColor
      
    2. 监听内购流程的结束回调(比如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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 15:54:58