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 {