diff --git a/android/build.gradle b/android/build.gradle index e97f837cee..989c2c4c35 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -26,6 +26,10 @@ def isNewArchitectureEnabled() { return project.hasProperty("newArchEnabled") && project.newArchEnabled == "true" } +def isEdgeToEdgeEnabled() { + return project.hasProperty("edgeToEdgeEnabled") && project.edgeToEdgeEnabled == "true" +} + def reactNativeArchitectures() { def value = project.getProperties().get("reactNativeArchitectures") return value ? value.split(",") : ["armeabi-v7a", "x86", "x86_64", "arm64-v8a"] @@ -55,6 +59,7 @@ android { versionCode 1 versionName "1.0" buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString() + buildConfigField "boolean", "IS_EDGE_TO_EDGE_ENABLED", isEdgeToEdgeEnabled().toString() ndk { abiFilters (*reactNativeArchitectures()) } diff --git a/android/src/main/java/com/reactnativekeyboardcontroller/modules/statusbar/StatusBarManagerCompatModuleImpl.kt b/android/src/main/java/com/reactnativekeyboardcontroller/modules/statusbar/StatusBarManagerCompatModuleImpl.kt index 63a13ca1ca..a3c84b0a05 100644 --- a/android/src/main/java/com/reactnativekeyboardcontroller/modules/statusbar/StatusBarManagerCompatModuleImpl.kt +++ b/android/src/main/java/com/reactnativekeyboardcontroller/modules/statusbar/StatusBarManagerCompatModuleImpl.kt @@ -9,6 +9,7 @@ import androidx.core.view.WindowInsetsCompat import androidx.core.view.WindowInsetsControllerCompat import com.facebook.react.bridge.ReactApplicationContext import com.facebook.react.bridge.UiThreadUtil +import com.reactnativekeyboardcontroller.BuildConfig import com.reactnativekeyboardcontroller.log.Logger import com.reactnativekeyboardcontroller.views.EdgeToEdgeReactViewGroup import com.reactnativekeyboardcontroller.views.EdgeToEdgeViewRegistry @@ -38,6 +39,7 @@ class StatusBarManagerCompatModuleImpl( } @SuppressLint("ObsoleteSdkInt") + @Suppress("detekt:ReturnCount") fun setColor( color: Int, animated: Boolean, @@ -47,6 +49,11 @@ class StatusBarManagerCompatModuleImpl( return original.setColor(color.toDouble(), animated) } + if (BuildConfig.IS_EDGE_TO_EDGE_ENABLED) { + Logger.w(TAG, "StatusBarModule: Ignored status bar change, current activity is edge-to-edge.") + return + } + val activity = mReactContext.currentActivity if (activity == null) { Logger.w( @@ -79,6 +86,11 @@ class StatusBarManagerCompatModuleImpl( return original.setTranslucent(translucent) } + if (BuildConfig.IS_EDGE_TO_EDGE_ENABLED) { + Logger.w(TAG, "StatusBarModule: Ignored status bar change, current activity is edge-to-edge.") + return + } + UiThreadUtil.runOnUiThread { view()?.forceStatusBarTranslucent(translucent) }