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 {