From e07f385ae0acfcf8466859cb65f883e0b9830d90 Mon Sep 17 00:00:00 2001 From: Julia Reynolds Date: Tue, 2 Feb 2016 10:17:56 -0500 Subject: [PATCH] Clarify notification blocking in notification app list. Change summary to: Normal (nothing blocked), Partially blocked (at least one topic blocked), or Totally blocked (entire app blocked). Allow filtering on apps that are partially or totally blocked. Bug: 26882239 Change-Id: I29924147a97a3d1693b0286d48905485e11edf1d --- res/values/strings.xml | 4 +++- .../applications/AppStateNotificationBridge.java | 6 +++++- .../settings/applications/InstalledAppDetails.java | 2 ++ .../settings/notification/NotificationBackend.java | 11 +++++++++++ 4 files changed, 21 insertions(+), 2 deletions(-) diff --git a/res/values/strings.xml b/res/values/strings.xml index 76bc8b514ec..08ddd899fc0 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -6329,7 +6329,9 @@ Normal - Block + Fully Blocked + + Partially Blocked %1$s / %2$s diff --git a/src/com/android/settings/applications/AppStateNotificationBridge.java b/src/com/android/settings/applications/AppStateNotificationBridge.java index 6d057b35b65..c7b78af1e29 100644 --- a/src/com/android/settings/applications/AppStateNotificationBridge.java +++ b/src/com/android/settings/applications/AppStateNotificationBridge.java @@ -63,7 +63,11 @@ public class AppStateNotificationBridge extends AppStateBaseBridge { @Override public boolean filterApp(AppEntry info) { - return info.extraInfo != null && ((AppRow) info.extraInfo).banned; + if (info == null) { + return false; + } + AppRow row = (AppRow) info.extraInfo; + return row.banned || row.bannedTopics; } }; } diff --git a/src/com/android/settings/applications/InstalledAppDetails.java b/src/com/android/settings/applications/InstalledAppDetails.java index f31fa72ef3a..83159e326d1 100755 --- a/src/com/android/settings/applications/InstalledAppDetails.java +++ b/src/com/android/settings/applications/InstalledAppDetails.java @@ -821,6 +821,8 @@ public class InstalledAppDetails extends AppInfoBase public static CharSequence getNotificationSummary(AppRow appRow, Context context) { if (appRow.banned) { return context.getString(R.string.notifications_disabled); + } else if (appRow.bannedTopics) { + return context.getString(R.string.notifications_partially_disabled); } return context.getString(R.string.notifications_enabled); } diff --git a/src/com/android/settings/notification/NotificationBackend.java b/src/com/android/settings/notification/NotificationBackend.java index 292d24771bf..8dd6a4cdd87 100644 --- a/src/com/android/settings/notification/NotificationBackend.java +++ b/src/com/android/settings/notification/NotificationBackend.java @@ -54,6 +54,7 @@ public class NotificationBackend { row.appImportance = getImportance(row.pkg, row.uid, null); row.appBypassDnd = getBypassZenMode(row.pkg, row.uid, null); row.appSensitive = getSensitive(row.pkg, row.uid, null); + row.bannedTopics = hasBannedTopics(row.pkg, row.uid); return row; } @@ -170,6 +171,15 @@ public class NotificationBackend { } } + public boolean hasBannedTopics(String pkg, int uid) { + try { + return sINM.hasBannedTopics(pkg, uid); + } catch (Exception e) { + Log.w(TAG, "Error calling NoMan", e); + return false; + } + } + static class Row { public String section; } @@ -186,6 +196,7 @@ public class NotificationBackend { public int appImportance; public boolean appBypassDnd; public boolean appSensitive; + public boolean bannedTopics; } public static class TopicRow extends AppRow {