From 3c06517d9ec0537c9c602c45c29519d8e58ef7dd Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 4 Feb 2021 12:22:12 +0100 Subject: [PATCH] Fix crash on API < 30 and light theme (#2774) --- CHANGES.md | 2 +- .../app/features/popup/PopupAlertManager.kt | 47 +++++++++++-------- 2 files changed, 29 insertions(+), 20 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 675c528d24..d21fcd19be 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -8,7 +8,7 @@ Improvements 🙌: - Bugfix 🐛: - - + - Fix crash on API < 30 and light theme (#2774) Translations 🗣: - diff --git a/vector/src/main/java/im/vector/app/features/popup/PopupAlertManager.kt b/vector/src/main/java/im/vector/app/features/popup/PopupAlertManager.kt index 28b2a8b4d5..1a746bba44 100644 --- a/vector/src/main/java/im/vector/app/features/popup/PopupAlertManager.kt +++ b/vector/src/main/java/im/vector/app/features/popup/PopupAlertManager.kt @@ -15,7 +15,6 @@ */ package im.vector.app.features.popup -import android.annotation.SuppressLint import android.app.Activity import android.os.Build import android.os.Handler @@ -158,28 +157,38 @@ class PopupAlertManager @Inject constructor(private val avatarRenderer: Lazy= Build.VERSION_CODES.M } - // Do not change anything on Dark themes - ?.takeIf { ThemeUtils.isLightTheme(it) } - ?.let { it.window?.decorView } - ?.let { view -> - view.windowInsetsController?.setSystemBarsAppearance(0, APPEARANCE_LIGHT_STATUS_BARS) - } + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + weakCurrentActivity?.get() + // Do not change anything on Dark themes + ?.takeIf { ThemeUtils.isLightTheme(it) } + ?.window?.decorView + ?.let { view -> + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { + view.windowInsetsController?.setSystemBarsAppearance(0, APPEARANCE_LIGHT_STATUS_BARS) + } else { + @Suppress("DEPRECATION") + view.systemUiVisibility = view.systemUiVisibility and View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR.inv() + } + } + } } - @SuppressLint("InlinedApi") private fun setLightStatusBar() { - weakCurrentActivity?.get() - ?.takeIf { Build.VERSION.SDK_INT >= Build.VERSION_CODES.M } - // Do not change anything on Dark themes - ?.takeIf { ThemeUtils.isLightTheme(it) } - ?.let { it.window?.decorView } - ?.let { view -> - view.windowInsetsController?.setSystemBarsAppearance(APPEARANCE_LIGHT_STATUS_BARS, APPEARANCE_LIGHT_STATUS_BARS) - } + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + weakCurrentActivity?.get() + // Do not change anything on Dark themes + ?.takeIf { ThemeUtils.isLightTheme(it) } + ?.window?.decorView + ?.let { view -> + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { + view.windowInsetsController?.setSystemBarsAppearance(APPEARANCE_LIGHT_STATUS_BARS, APPEARANCE_LIGHT_STATUS_BARS) + } else { + @Suppress("DEPRECATION") + view.systemUiVisibility = view.systemUiVisibility or View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR + } + } + } } private fun showAlert(alert: VectorAlert, activity: Activity, animate: Boolean = true) {