diff --git a/app/src/main/java/eu/faircode/email/ApplicationEx.java b/app/src/main/java/eu/faircode/email/ApplicationEx.java index ae68a324c4..11e5b5a0c5 100644 --- a/app/src/main/java/eu/faircode/email/ApplicationEx.java +++ b/app/src/main/java/eu/faircode/email/ApplicationEx.java @@ -856,6 +856,9 @@ public class ApplicationEx extends Application if (Build.PRODUCT == null || !Build.PRODUCT.endsWith("_beta") || Build.VERSION.SDK_INT < Build.VERSION_CODES.UPSIDE_DOWN_CAKE) editor.putBoolean("mod", false); + } else if (version < 2180) { + if (Helper.isAndroid15()) + editor.putInt("last_sdk", 0); } if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && !BuildConfig.DEBUG) @@ -865,6 +868,11 @@ public class ApplicationEx extends Application editor.putInt("previous_version", version); editor.putInt("version", BuildConfig.VERSION_CODE); + int last_sdk = prefs.getInt("last_sdk", Build.VERSION.SDK_INT); + if (Helper.isAndroid15() && last_sdk <= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) + editor.remove("setup_reminder"); + editor.putInt("last_sdk", Build.VERSION.SDK_INT); + editor.apply(); } diff --git a/app/src/main/java/eu/faircode/email/FragmentDialogPermissions.java b/app/src/main/java/eu/faircode/email/FragmentDialogPermissions.java index 81d9425c94..a64aba2d34 100644 --- a/app/src/main/java/eu/faircode/email/FragmentDialogPermissions.java +++ b/app/src/main/java/eu/faircode/email/FragmentDialogPermissions.java @@ -50,6 +50,7 @@ public class FragmentDialogPermissions extends FragmentDialogBase { TextView tvContactPermissions = dview.findViewById(R.id.tvContactPermissions); TextView tvNotificationPermissions = dview.findViewById(R.id.tvNotificationPermissions); TextView tvDozeDevice = dview.findViewById(R.id.tvDozeDevice); + TextView tvDozeAndroid15 = dview.findViewById(R.id.tvDozeAndroid15); TextView tvDozeAndroid12 = dview.findViewById(R.id.tvDozeAndroid12); CheckBox cbNotAgain = dview.findViewById(R.id.cbNotAgain); Group grp2 = dview.findViewById(R.id.grp2); @@ -82,6 +83,7 @@ public class FragmentDialogPermissions extends FragmentDialogBase { tvContactPermissions.setVisibility(hasContactPermissions ? View.GONE : View.VISIBLE); tvNotificationPermissions.setVisibility(hasNotificationPermissions ? View.GONE : View.VISIBLE); tvDozeDevice.setVisibility(Helper.isKilling() && !isIgnoring ? View.VISIBLE : View.GONE); + tvDozeAndroid15.setVisibility(Helper.isAndroid15() && !isIgnoring ? View.VISIBLE : View.GONE); tvDozeAndroid12.setVisibility(!canScheduleExact && !isIgnoring ? View.VISIBLE : View.GONE); grp2.setVisibility( diff --git a/app/src/main/java/eu/faircode/email/FragmentSetup.java b/app/src/main/java/eu/faircode/email/FragmentSetup.java index b3356f0cc4..11b28f48d8 100644 --- a/app/src/main/java/eu/faircode/email/FragmentSetup.java +++ b/app/src/main/java/eu/faircode/email/FragmentSetup.java @@ -132,6 +132,7 @@ public class FragmentSetup extends FragmentBase implements SharedPreferences.OnS private TextView tvDozeDone; private Button btnDoze; + private TextView tvDoze15; private TextView tvDoze12; private TextView tvDozeWhy; private TextView tvKilling; @@ -227,6 +228,7 @@ public class FragmentSetup extends FragmentBase implements SharedPreferences.OnS tvDozeDone = view.findViewById(R.id.tvDozeDone); btnDoze = view.findViewById(R.id.btnDoze); + tvDoze15 = view.findViewById(R.id.tvDoze15); tvDoze12 = view.findViewById(R.id.tvDoze12); tvDozeWhy = view.findViewById(R.id.tvDozeWhy); tvKilling = view.findViewById(R.id.tvKilling); @@ -883,6 +885,7 @@ public class FragmentSetup extends FragmentBase implements SharedPreferences.OnS tvDozeDone.setCompoundDrawables(null, null, null, null); btnDoze.setText(null); btnDoze.setCompoundDrawables(null, null, null, null); + tvDoze15.setVisibility(View.GONE); tvDoze12.setVisibility(View.GONE); btnInbox.setEnabled(false); @@ -1034,6 +1037,7 @@ public class FragmentSetup extends FragmentBase implements SharedPreferences.OnS 0, 0, isIgnoring ? R.drawable.twotone_settings_24 : R.drawable.twotone_check_24, 0); btnDoze.setText(isIgnoring ? R.string.title_setup_manage : R.string.title_setup_grant); + tvDoze15.setVisibility(Helper.isAndroid15() && !isIgnoring ? View.VISIBLE : View.GONE); tvDoze12.setVisibility(!canScheduleExact && !isIgnoring ? View.VISIBLE : View.GONE); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { diff --git a/app/src/main/java/eu/faircode/email/Helper.java b/app/src/main/java/eu/faircode/email/Helper.java index b92f0adeb6..738ec1ecd1 100644 --- a/app/src/main/java/eu/faircode/email/Helper.java +++ b/app/src/main/java/eu/faircode/email/Helper.java @@ -1687,6 +1687,10 @@ public class Helper { return (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S); } + static boolean isAndroid15() { + return (Build.VERSION.SDK_INT > Build.VERSION_CODES.UPSIDE_DOWN_CAKE); + } + static String getMIUIVersion() { try { Class c = Class.forName("android.os.SystemProperties"); diff --git a/app/src/main/res/layout/dialog_permissions.xml b/app/src/main/res/layout/dialog_permissions.xml index ca4eb36315..e0d7a1572a 100644 --- a/app/src/main/res/layout/dialog_permissions.xml +++ b/app/src/main/res/layout/dialog_permissions.xml @@ -118,6 +118,22 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/tvDoze" /> + + + app:layout_constraintTop_toBottomOf="@id/tvDozeAndroid15" /> + + + app:layout_constraintTop_toBottomOf="@id/tvDoze15" /> Sync stopped? This is probably required for this device The app won\'t work properly + The app cannot be started automatically Alarms & reminders are disabled Background restrictions are enabled Data saver is enabled