From 184c2a9b3f9b452378cfb4003e77327ccd3a2070 Mon Sep 17 00:00:00 2001 From: M66B Date: Mon, 14 Jun 2021 19:04:58 +0200 Subject: [PATCH] canScheduleExactAlarms --- .../java/eu/faircode/email/AlarmManagerCompatEx.java | 12 +++++++++++- .../java/eu/faircode/email/FragmentOptionsMisc.java | 1 + 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/eu/faircode/email/AlarmManagerCompatEx.java b/app/src/main/java/eu/faircode/email/AlarmManagerCompatEx.java index a318be3ccf..4ce4d656f6 100644 --- a/app/src/main/java/eu/faircode/email/AlarmManagerCompatEx.java +++ b/app/src/main/java/eu/faircode/email/AlarmManagerCompatEx.java @@ -23,6 +23,7 @@ import android.app.AlarmManager; import android.app.PendingIntent; import android.content.Context; import android.content.SharedPreferences; +import android.os.Build; import androidx.annotation.NonNull; import androidx.core.app.AlarmManagerCompat; @@ -35,9 +36,18 @@ public class AlarmManagerCompatEx { SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); boolean exact_alarms = prefs.getBoolean("exact_alarms", true); - if (exact_alarms) + if (exact_alarms && canScheduleExactAlarms(context)) AlarmManagerCompat.setExactAndAllowWhileIdle(am, type, trigger, pi); else AlarmManagerCompat.setAndAllowWhileIdle(am, type, trigger, pi); } + + static boolean canScheduleExactAlarms(Context context) { + if (Build.VERSION.SDK_INT < 31 /* S */) + return true; + else + return true; + //AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); + //return am.canScheduleExactAlarms(); + } } diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java b/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java index e07821cce4..5309e311f4 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java +++ b/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java @@ -833,6 +833,7 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc setLastCleanup(prefs.getLong("last_cleanup", -1)); + swExactAlarms.setEnabled(AlarmManagerCompatEx.canScheduleExactAlarms(getContext())); swTestIab.setVisibility(BuildConfig.DEBUG ? View.VISIBLE : View.GONE); PreferenceManager.getDefaultSharedPreferences(getContext()).registerOnSharedPreferenceChangeListener(this);