diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index a672afac..97b7faa4 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -29,7 +29,7 @@ plugins {
val androidTargetSdkVersion: Int by rootProject.extra
val androidMinSdkVersion: Int by rootProject.extra
val androidBuildToolsVersion: String by rootProject.extra
-val androidCompileSdkVersion: Int by rootProject.extra
+val androidCompileSdkVersion: String by rootProject.extra
val androidCompileNdkVersion: String by rootProject.extra
val androidSourceCompatibility: JavaVersion by rootProject.extra
val androidTargetCompatibility: JavaVersion by rootProject.extra
@@ -43,7 +43,7 @@ val androidKeyAlias: String? by rootProject
val androidKeyPassword: String? by rootProject
android {
- compileSdk = androidCompileSdkVersion
+ compileSdkPreview = androidCompileSdkVersion
ndkVersion = androidCompileNdkVersion
buildToolsVersion = androidBuildToolsVersion
diff --git a/app/src/main/java/org/lsposed/manager/ui/activity/SettingsActivity.java b/app/src/main/java/org/lsposed/manager/ui/activity/SettingsActivity.java
index 49fbc7b7..41d95420 100644
--- a/app/src/main/java/org/lsposed/manager/ui/activity/SettingsActivity.java
+++ b/app/src/main/java/org/lsposed/manager/ui/activity/SettingsActivity.java
@@ -298,6 +298,21 @@ public class SettingsActivity extends BaseActivity {
prefShowHiddenIcons.setOnPreferenceChangeListener((preference, newValue) -> Settings.Global.putInt(requireActivity().getContentResolver(),
"show_hidden_icon_apps_enabled", (boolean) newValue ? 1 : 0));
}
+
+ SwitchPreference prefFollowSystemAccent = findPreference("follow_system_accent");
+ if (prefFollowSystemAccent != null && (Build.VERSION.SDK_INT >= 31 || Build.VERSION.SDK_INT == 30 && Build.VERSION.PREVIEW_SDK_INT != 0)) {
+ if (primary_color != null) {
+ primary_color.setVisible(!prefFollowSystemAccent.isChecked());
+ }
+ prefFollowSystemAccent.setVisible(true);
+ prefFollowSystemAccent.setOnPreferenceChangeListener((preference, newValue) -> {
+ SettingsActivity activity = (SettingsActivity) getActivity();
+ if (activity != null) {
+ activity.restart();
+ }
+ return true;
+ });
+ }
}
@Override
diff --git a/app/src/main/java/org/lsposed/manager/util/theme/ThemeUtil.java b/app/src/main/java/org/lsposed/manager/util/theme/ThemeUtil.java
index 85cf2619..84b876a1 100644
--- a/app/src/main/java/org/lsposed/manager/util/theme/ThemeUtil.java
+++ b/app/src/main/java/org/lsposed/manager/util/theme/ThemeUtil.java
@@ -21,6 +21,7 @@ package org.lsposed.manager.util.theme;
import android.content.Context;
import android.content.SharedPreferences;
+import android.os.Build;
import androidx.annotation.ColorRes;
import androidx.annotation.StyleRes;
@@ -73,6 +74,10 @@ public class ThemeUtil {
return preferences.getBoolean("black_dark_theme", false);
}
+ private static boolean isSystemAccent() {
+ return preferences.getBoolean("follow_system_accent", true);
+ }
+
public static String getNightTheme(Context context) {
if (isBlackNightTheme()
&& ResourceUtils.isNightMode(context.getResources().getConfiguration()))
@@ -105,6 +110,9 @@ public class ThemeUtil {
@StyleRes
public static int getColorThemeStyleRes() {
+ if ((Build.VERSION.SDK_INT >= 31 || Build.VERSION.SDK_INT == 30 && Build.VERSION.PREVIEW_SDK_INT != 0) && isSystemAccent()) {
+ return R.style.ThemeOverlay_system;
+ }
Integer theme = colorThemeMap.get(getColorTheme());
if (theme == null) {
return R.style.ThemeOverlay_color_primary;
diff --git a/app/src/main/res/values-night-v31/colors_custom.xml b/app/src/main/res/values-night-v31/colors_custom.xml
new file mode 100644
index 00000000..453932bd
--- /dev/null
+++ b/app/src/main/res/values-night-v31/colors_custom.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+ @android:color/system_accent1_200
+
diff --git a/app/src/main/res/values-night/colors_custom.xml b/app/src/main/res/values-night/colors_custom.xml
index 4e422a04..25570ddd 100644
--- a/app/src/main/res/values-night/colors_custom.xml
+++ b/app/src/main/res/values-night/colors_custom.xml
@@ -39,4 +39,5 @@
@color/material_brown_200
@color/material_grey_200
@color/material_blue_grey_200
+ @color/material_blue
diff --git a/app/src/main/res/values-v31/colors_custom.xml b/app/src/main/res/values-v31/colors_custom.xml
new file mode 100644
index 00000000..0c90d821
--- /dev/null
+++ b/app/src/main/res/values-v31/colors_custom.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+ @android:color/system_accent1_500
+
diff --git a/app/src/main/res/values/colors_custom.xml b/app/src/main/res/values/colors_custom.xml
index 5e93ab0a..652dc4fc 100644
--- a/app/src/main/res/values/colors_custom.xml
+++ b/app/src/main/res/values/colors_custom.xml
@@ -39,4 +39,5 @@
@color/material_brown_500
@color/material_grey_500
@color/material_blue_grey_500
+ @color/material_blue
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index ff619b5b..aca58efc 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -152,6 +152,7 @@
Workaround DNS poisoning in some nations
Theme color
Color that appears most frequently in the app
+ System accent color
Forced display of the application launcher icon on Android 10+
System
diff --git a/app/src/main/res/values/themes_custom.xml b/app/src/main/res/values/themes_custom.xml
index 5589fcf3..72587cf1 100644
--- a/app/src/main/res/values/themes_custom.xml
+++ b/app/src/main/res/values/themes_custom.xml
@@ -98,4 +98,8 @@
+
+
diff --git a/app/src/main/res/xml/prefs.xml b/app/src/main/res/xml/prefs.xml
index 0ce249a2..8e045c32 100644
--- a/app/src/main/res/xml/prefs.xml
+++ b/app/src/main/res/xml/prefs.xml
@@ -31,6 +31,11 @@
+
-
+
diff --git a/build.gradle.kts b/build.gradle.kts
index b59b9071..16ccd7b5 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -41,7 +41,7 @@ val verName by extra("v1.3.5")
val androidTargetSdkVersion by extra(30)
val androidMinSdkVersion by extra(27)
val androidBuildToolsVersion by extra("30.0.3")
-val androidCompileSdkVersion by extra(30)
+val androidCompileSdkVersion by extra("android-S")
val androidCompileNdkVersion by extra("22.1.7171670")
val androidSourceCompatibility by extra(JavaVersion.VERSION_11)
val androidTargetCompatibility by extra(JavaVersion.VERSION_11)
diff --git a/core/build.gradle.kts b/core/build.gradle.kts
index 917879ce..dd26d9d2 100644
--- a/core/build.gradle.kts
+++ b/core/build.gradle.kts
@@ -47,7 +47,7 @@ val apiCode: Int by rootProject.extra
val androidTargetSdkVersion: Int by rootProject.extra
val androidMinSdkVersion: Int by rootProject.extra
val androidBuildToolsVersion: String by rootProject.extra
-val androidCompileSdkVersion: Int by rootProject.extra
+val androidCompileSdkVersion: String by rootProject.extra
val androidCompileNdkVersion: String by rootProject.extra
val androidSourceCompatibility: JavaVersion by rootProject.extra
val androidTargetCompatibility: JavaVersion by rootProject.extra
@@ -69,7 +69,7 @@ dependencies {
}
android {
- compileSdk = androidCompileSdkVersion
+ compileSdkPreview = androidCompileSdkVersion
ndkVersion = androidCompileNdkVersion
buildToolsVersion = androidBuildToolsVersion