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
This commit is contained in:
Julia Reynolds
2016-02-02 10:17:56 -05:00
parent cac0dddd2a
commit e07f385ae0
4 changed files with 21 additions and 2 deletions

View File

@@ -6329,7 +6329,9 @@
<!-- App notification summary with notifications enabled [CHAR LIMIT=40] --> <!-- App notification summary with notifications enabled [CHAR LIMIT=40] -->
<string name="notifications_enabled">Normal</string> <string name="notifications_enabled">Normal</string>
<!-- App notification summary with notifications disabled [CHAR LIMIT=40] --> <!-- App notification summary with notifications disabled [CHAR LIMIT=40] -->
<string name="notifications_disabled">Block</string> <string name="notifications_disabled">Fully Blocked</string>
<!-- App notification summary with notifications disabled [CHAR LIMIT=40] -->
<string name="notifications_partially_disabled">Partially Blocked</string>
<!-- App notification summary with 2 items [CHAR LIMIT=15] --> <!-- App notification summary with 2 items [CHAR LIMIT=15] -->
<string name="notifications_two_items"><xliff:g id="notif_state" example="Priority">%1$s</xliff:g> / <xliff:g id="notif_state" example="Priority">%2$s</xliff:g></string> <string name="notifications_two_items"><xliff:g id="notif_state" example="Priority">%1$s</xliff:g> / <xliff:g id="notif_state" example="Priority">%2$s</xliff:g></string>
<!-- App notification summary with 3 items [CHAR LIMIT=15] --> <!-- App notification summary with 3 items [CHAR LIMIT=15] -->

View File

@@ -63,7 +63,11 @@ public class AppStateNotificationBridge extends AppStateBaseBridge {
@Override @Override
public boolean filterApp(AppEntry info) { 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;
} }
}; };
} }

View File

@@ -821,6 +821,8 @@ public class InstalledAppDetails extends AppInfoBase
public static CharSequence getNotificationSummary(AppRow appRow, Context context) { public static CharSequence getNotificationSummary(AppRow appRow, Context context) {
if (appRow.banned) { if (appRow.banned) {
return context.getString(R.string.notifications_disabled); 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); return context.getString(R.string.notifications_enabled);
} }

View File

@@ -54,6 +54,7 @@ public class NotificationBackend {
row.appImportance = getImportance(row.pkg, row.uid, null); row.appImportance = getImportance(row.pkg, row.uid, null);
row.appBypassDnd = getBypassZenMode(row.pkg, row.uid, null); row.appBypassDnd = getBypassZenMode(row.pkg, row.uid, null);
row.appSensitive = getSensitive(row.pkg, row.uid, null); row.appSensitive = getSensitive(row.pkg, row.uid, null);
row.bannedTopics = hasBannedTopics(row.pkg, row.uid);
return row; 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 { static class Row {
public String section; public String section;
} }
@@ -186,6 +196,7 @@ public class NotificationBackend {
public int appImportance; public int appImportance;
public boolean appBypassDnd; public boolean appBypassDnd;
public boolean appSensitive; public boolean appSensitive;
public boolean bannedTopics;
} }
public static class TopicRow extends AppRow { public static class TopicRow extends AppRow {