Android 12如何使锁屏界面状态栏ICON显示与桌面状态栏保持一致

1.相关类 CollapsedStatusBarFragment.javaStatusBar.java2.原生隐藏控制逻辑 Android12 在锁屏界面开启

1.相关类

  • CollapsedStatusBarFragment.java
  • StatusBar.java

2.原生隐藏控制逻辑
Android12 在锁屏界面开启时,状态栏显示电池电量,SIM状态和网络状态,隐藏掉了时间和通知等的显示(PanelView这些都会显示)
那么它是如何控制的呢?
在CollapsedStatusBarFragment.java中有一些flag可以控制,核心控制逻辑在adjustDisableFlags()方法中:

protected int adjustDisableFlags(int state) {boolean headsUpVisible = mStatusBarComponent.headsUpShouldBeVisible();if (headsUpVisible) {state |= DISABLE_CLOCK;}//下面的三个Flag就可以控制相关ICON显示if (!mKeyguardStateController.isLaunchTransitionFadingAway()&& !mKeyguardStateController.isKeyguardFadingAway()&& shouldHideNotificationIcons()&& !(mStatusBarStateController.getState() == StatusBarState.KEYGUARD&& headsUpVisible)) {state |= DISABLE_NOTIFICATION_ICONS;state |= DISABLE_SYSTEM_INFO;state |= DISABLE_CLOCK;}if (mNetworkController != null && EncryptionHelper.IS_DATA_ENCRYPTED) {if (mNetworkController.hasEmergencyCryptKeeperText()) {state |= DISABLE_NOTIFICATION_ICONS;}if (!mNetworkController.isRadioOn()) {state |= DISABLE_SYSTEM_INFO;}}