diff --git a/app/src/main/java/com/todoroo/astrid/reminders/ReminderPreferences.java b/app/src/main/java/com/todoroo/astrid/reminders/ReminderPreferences.java
index e69a943cb..b6bad7870 100644
--- a/app/src/main/java/com/todoroo/astrid/reminders/ReminderPreferences.java
+++ b/app/src/main/java/com/todoroo/astrid/reminders/ReminderPreferences.java
@@ -35,6 +35,7 @@ import org.tasks.ui.TimePreference;
import javax.inject.Inject;
+import static com.todoroo.andlib.utility.AndroidUtilities.atLeastMarshmallow;
import static com.todoroo.andlib.utility.AndroidUtilities.atLeastOreo;
import static com.todoroo.andlib.utility.AndroidUtilities.preOreo;
import static org.tasks.PermissionUtil.verifyPermissions;
@@ -79,17 +80,27 @@ public class ReminderPreferences extends InjectingPreferenceActivity {
initializeTimePreference(getQuietEndPreference(), REQUEST_QUIET_END);
findPreference(R.string.notification_channel_settings).setOnPreferenceClickListener(this::openNotificationChannelSettings);
+ findPreference(R.string.battery_optimization_settings).setOnPreferenceClickListener(this::openBatteryOptimizationSettings);
requires(device.supportsLocationServices(), R.string.geolocation_reminders);
requires(atLeastOreo(), R.string.notification_channel_settings);
+ requires(atLeastMarshmallow(), R.string.battery_optimization_settings);
requires(preOreo(), R.string.p_rmd_ringtone, R.string.p_rmd_vibrate, R.string.p_led_notification);
}
@TargetApi(Build.VERSION_CODES.O)
private boolean openNotificationChannelSettings(Preference ignored) {
- Intent intent = new Intent(Settings.ACTION_APP_NOTIFICATION_SETTINGS);
- intent.putExtra(Settings.EXTRA_APP_PACKAGE, ReminderPreferences.this.getPackageName());
- startActivity(intent);
+ Intent intent = new Intent(Settings.ACTION_APP_NOTIFICATION_SETTINGS);
+ intent.putExtra(Settings.EXTRA_APP_PACKAGE, ReminderPreferences.this.getPackageName());
+ startActivity(intent);
+ return true;
+ }
+
+ @TargetApi(Build.VERSION_CODES.M)
+ private boolean openBatteryOptimizationSettings(Preference ignored) {
+ Intent intent = new Intent();
+ intent.setAction(Settings.ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS);
+ startActivity(intent);
return true;
}
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index b39509908..aefa890c5 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -785,4 +785,6 @@ File %1$s contained %2$s.\n\n
Use locale default
Use native date and time pickers
Manage notifications
+ Manage battery optimizations
+ Battery optimizations may delay notifications
diff --git a/app/src/main/res/xml/preferences_reminders.xml b/app/src/main/res/xml/preferences_reminders.xml
index 32e502c50..7978cd584 100644
--- a/app/src/main/res/xml/preferences_reminders.xml
+++ b/app/src/main/res/xml/preferences_reminders.xml
@@ -16,6 +16,11 @@
android:dependency="@string/p_rmd_enabled"
android:key="@string/notification_channel_settings"
android:title="@string/notification_channel_settings" />
+