From 0e69efee9680e537cfd4533cd391c580850d0e5d Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Wed, 23 Aug 2017 14:57:40 -0500 Subject: [PATCH] Add 'Manage notifications' shortcut --- .../astrid/reminders/ReminderPreferences.java | 15 +++++++++++++++ .../tasks/notifications/NotificationManager.java | 5 ++++- app/src/main/res/values/strings.xml | 1 + app/src/main/res/xml/preferences_reminders.xml | 4 ++++ 4 files changed, 24 insertions(+), 1 deletion(-) 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 c62d9bef7..027ad8b66 100644 --- a/app/src/main/java/com/todoroo/astrid/reminders/ReminderPreferences.java +++ b/app/src/main/java/com/todoroo/astrid/reminders/ReminderPreferences.java @@ -5,10 +5,12 @@ */ package com.todoroo.astrid.reminders; +import android.annotation.TargetApi; import android.content.Intent; import android.media.Ringtone; import android.media.RingtoneManager; import android.net.Uri; +import android.os.Build; import android.os.Bundle; import android.preference.CheckBoxPreference; import android.preference.Preference; @@ -22,6 +24,7 @@ import org.tasks.activities.TimePickerActivity; import org.tasks.injection.ActivityComponent; import org.tasks.injection.InjectingPreferenceActivity; import org.tasks.jobs.JobManager; +import org.tasks.notifications.NotificationManager; import org.tasks.preferences.ActivityPermissionRequestor; import org.tasks.preferences.Device; import org.tasks.preferences.PermissionChecker; @@ -77,10 +80,22 @@ public class ReminderPreferences extends InjectingPreferenceActivity { initializeTimePreference(getQuietStartPreference(), REQUEST_QUIET_START); initializeTimePreference(getQuietEndPreference(), REQUEST_QUIET_END); + findPreference(R.string.notification_channel_settings).setOnPreferenceClickListener(this::openNotificationChannelSettings); + requires(device.supportsLocationServices(), R.string.geolocation_reminders); + requires(atLeastOreo(), R.string.notification_channel_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_CHANNEL_NOTIFICATION_SETTINGS); + intent.putExtra(Settings.EXTRA_CHANNEL_ID, NotificationManager.DEFAULT_NOTIFICATION_CHANNEL); + intent.putExtra(Settings.EXTRA_APP_PACKAGE, ReminderPreferences.this.getPackageName()); + startActivity(intent); + return true; + } + private void rescheduleNotificationsOnChange(int... resIds) { for (int resId : resIds) { findPreference(getString(resId)).setOnPreferenceChangeListener((preference, newValue) -> { diff --git a/app/src/main/java/org/tasks/notifications/NotificationManager.java b/app/src/main/java/org/tasks/notifications/NotificationManager.java index 94165b06c..b91ca77fe 100644 --- a/app/src/main/java/org/tasks/notifications/NotificationManager.java +++ b/app/src/main/java/org/tasks/notifications/NotificationManager.java @@ -16,7 +16,7 @@ public class NotificationManager { private final android.app.NotificationManager notificationManager; private final Preferences preferences; - public static final String DEFAULT_NOTIFICATION_CHANNEL = "my_channel_01"; + public static final String DEFAULT_NOTIFICATION_CHANNEL = "notifications"; @Inject public NotificationManager(@ForApplication Context context, Preferences preferences) { @@ -28,6 +28,9 @@ public class NotificationManager { NotificationChannel notificationChannel = new NotificationChannel(DEFAULT_NOTIFICATION_CHANNEL, channelName, android.app.NotificationManager.IMPORTANCE_HIGH); notificationChannel.enableLights(true); notificationChannel.enableVibration(true); + notificationChannel.setBypassDnd(true); + notificationChannel.setShowBadge(true); + notificationChannel.setImportance(android.app.NotificationManager.IMPORTANCE_HIGH); notificationChannel.setLightColor(preferences.getLEDColor()); notificationChannel.setVibrationPattern(preferences.getVibrationPattern()); notificationManager.createNotificationChannel(notificationChannel); diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 23924e73e..4aebd9e32 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -789,4 +789,5 @@ File %1$s contained %2$s.\n\n Start of week Use locale default Use native date and time pickers + Manage notifications diff --git a/app/src/main/res/xml/preferences_reminders.xml b/app/src/main/res/xml/preferences_reminders.xml index d88032d81..c4a856a9e 100644 --- a/app/src/main/res/xml/preferences_reminders.xml +++ b/app/src/main/res/xml/preferences_reminders.xml @@ -12,6 +12,10 @@ android:defaultValue="true" android:key="@string/p_rmd_enabled" android:title="@string/enabled" /> +