Update notification megaphone behavior.

Detect when they've blocked the channel group, and also don't snooze the
megaphone unless they hit 'not now'.
This commit is contained in:
Greyson Parrelli
2021-03-02 10:08:02 -05:00
committed by GitHub
parent d5afcc4aec
commit 8c90c3ad81
2 changed files with 26 additions and 6 deletions

View File

@@ -382,7 +382,9 @@ public class NotificationChannels {
* lower importance.
*
* This could also return true if the specific channnel is enabled, but notifications *overall*
* are disabled. Check {@link #areNotificationsEnabled(Context)} to be safe.
* are disabled, or the messages category is disabled. Check
* {@link #areNotificationsEnabled(Context)} and {@link #isMessagesChannelGroupEnabled(Context)}
* to be safe.
*/
public static synchronized boolean isMessageChannelEnabled(@NonNull Context context) {
if (!supported()) {
@@ -395,6 +397,23 @@ public class NotificationChannels {
return channel != null && channel.getImportance() != NotificationManager.IMPORTANCE_NONE;
}
/**
* Whether or not the notification category for messages is enabled. Note that even if it is,
* a user could have blocked the specific channel, or notifications overall, and it'd still be
* true. See {@link #isMessageChannelEnabled(Context)} and {@link #areNotificationsEnabled(Context)}.
*/
public static synchronized boolean isMessagesChannelGroupEnabled(@NonNull Context context) {
if (Build.VERSION.SDK_INT < 28) {
return true;
}
NotificationManager notificationManager = ServiceUtil.getNotificationManager(context);
NotificationChannelGroup group = notificationManager.getNotificationChannelGroup(CATEGORY_MESSAGES);
return group != null && !group.isBlocked();
}
/**
* Whether or not notifications for the entire app are enabled.
*/