diff --git a/package.json b/package.json index 5e9b6c10..47c22719 100644 --- a/package.json +++ b/package.json @@ -31,6 +31,10 @@ "cordova": ">=3.0.0" }, "4.0.0": { + "cordova-android": ">=10.0.0", + "cordova": ">=3.0.0" + }, + "5.0.0": { "cordova": ">100" } } diff --git a/plugin.xml b/plugin.xml index 146f8cbf..247ab07f 100644 --- a/plugin.xml +++ b/plugin.xml @@ -29,6 +29,7 @@ + diff --git a/src/android/StatusBar.java b/src/android/StatusBar.java index 2e40eb03..8d123e10 100644 --- a/src/android/StatusBar.java +++ b/src/android/StatusBar.java @@ -28,6 +28,9 @@ import android.view.Window; import android.view.WindowManager; +import androidx.core.view.WindowCompat; +import androidx.core.view.WindowInsetsControllerCompat; + import org.apache.cordova.CallbackContext; import org.apache.cordova.CordovaArgs; import org.apache.cordova.CordovaInterface; @@ -343,8 +346,9 @@ private void setStatusBarTransparent(final boolean transparent) { private void setStatusBarStyle(final String style) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { if (style != null && !style.isEmpty()) { - View decorView = cordova.getActivity().getWindow().getDecorView(); - int uiOptions = decorView.getSystemUiVisibility(); + Window window = cordova.getActivity().getWindow(); + View decorView = window.getDecorView(); + WindowInsetsControllerCompat windowInsetsControllerCompat = WindowCompat.getInsetsController(window, decorView); String[] darkContentStyles = { "default", @@ -357,12 +361,12 @@ private void setStatusBarStyle(final String style) { }; if (Arrays.asList(darkContentStyles).contains(style.toLowerCase())) { - decorView.setSystemUiVisibility(uiOptions | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR); + windowInsetsControllerCompat.setAppearanceLightStatusBars(true); return; } if (Arrays.asList(lightContentStyles).contains(style.toLowerCase())) { - decorView.setSystemUiVisibility(uiOptions & ~View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR); + windowInsetsControllerCompat.setAppearanceLightStatusBars(false); return; }