Only show work profile notifs if enabled

Test: manual, turn off profile
Fixes: 157137055
Change-Id: Ic042300297c09d132e793d13fec18b23d24f2cc8
This commit is contained in:
Julia Reynolds
2020-05-20 12:29:39 -04:00
parent a75dddbf9f
commit 39ceee9e00
2 changed files with 26 additions and 6 deletions

View File

@@ -265,7 +265,7 @@ public class NotificationHistoryActivity extends Activity {
LinearLayoutManager lm = new LinearLayoutManager(NotificationHistoryActivity.this); LinearLayoutManager lm = new LinearLayoutManager(NotificationHistoryActivity.this);
mSnoozedRv.setLayoutManager(lm); mSnoozedRv.setLayoutManager(lm);
mSnoozedRv.setAdapter( mSnoozedRv.setAdapter(
new NotificationSbnAdapter(NotificationHistoryActivity.this, mPm)); new NotificationSbnAdapter(NotificationHistoryActivity.this, mPm, mUm));
mSnoozedRv.setNestedScrollingEnabled(false); mSnoozedRv.setNestedScrollingEnabled(false);
if (snoozed == null || snoozed.length == 0) { if (snoozed == null || snoozed.length == 0) {
@@ -280,7 +280,7 @@ public class NotificationHistoryActivity extends Activity {
new LinearLayoutManager(NotificationHistoryActivity.this); new LinearLayoutManager(NotificationHistoryActivity.this);
mDismissedRv.setLayoutManager(dismissLm); mDismissedRv.setLayoutManager(dismissLm);
mDismissedRv.setAdapter( mDismissedRv.setAdapter(
new NotificationSbnAdapter(NotificationHistoryActivity.this, mPm)); new NotificationSbnAdapter(NotificationHistoryActivity.this, mPm, mUm));
mDismissedRv.setNestedScrollingEnabled(false); mDismissedRv.setNestedScrollingEnabled(false);
if (dismissed == null || dismissed.length == 0) { if (dismissed == null || dismissed.length == 0) {

View File

@@ -32,6 +32,7 @@ import android.content.res.Configuration;
import android.graphics.PorterDuff; import android.graphics.PorterDuff;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.os.UserHandle; import android.os.UserHandle;
import android.os.UserManager;
import android.service.notification.StatusBarNotification; import android.service.notification.StatusBarNotification;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.Log; import android.util.Log;
@@ -47,6 +48,7 @@ import com.android.internal.util.ContrastColorUtil;
import com.android.settings.R; import com.android.settings.R;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@@ -62,8 +64,9 @@ public class NotificationSbnAdapter extends
private @ColorInt int mBackgroundColor; private @ColorInt int mBackgroundColor;
private boolean mInNightMode; private boolean mInNightMode;
private @UserIdInt int mCurrentUser; private @UserIdInt int mCurrentUser;
private List<Integer> mEnabledProfiles = new ArrayList<>();
public NotificationSbnAdapter(Context context, PackageManager pm) { public NotificationSbnAdapter(Context context, PackageManager pm, UserManager um) {
mContext = context; mContext = context;
mPm = pm; mPm = pm;
mUserBadgeCache = new HashMap<>(); mUserBadgeCache = new HashMap<>();
@@ -74,6 +77,12 @@ public class NotificationSbnAdapter extends
mInNightMode = (currentConfig.uiMode & Configuration.UI_MODE_NIGHT_MASK) mInNightMode = (currentConfig.uiMode & Configuration.UI_MODE_NIGHT_MASK)
== Configuration.UI_MODE_NIGHT_YES; == Configuration.UI_MODE_NIGHT_YES;
mCurrentUser = ActivityManager.getCurrentUser(); mCurrentUser = ActivityManager.getCurrentUser();
int[] enabledUsers = um.getEnabledProfileIds(mCurrentUser);
for (int id : enabledUsers) {
if (!um.isQuietModeEnabled(UserHandle.of(id))) {
mEnabledProfiles.add(id);
}
}
setHasStableIds(true); setHasStableIds(true);
} }
@@ -115,10 +124,9 @@ public class NotificationSbnAdapter extends
} }
public void onRebuildComplete(List<StatusBarNotification> notifications) { public void onRebuildComplete(List<StatusBarNotification> notifications) {
// summaries are low content; don't bother showing them
for (int i = notifications.size() - 1; i >= 0; i--) { for (int i = notifications.size() - 1; i >= 0; i--) {
StatusBarNotification sbn = notifications.get(i); StatusBarNotification sbn = notifications.get(i);
if (sbn.isGroup() && sbn.getNotification().isGroupSummary()) { if (!shouldShowSbn(sbn)) {
notifications.remove(i); notifications.remove(i);
} }
} }
@@ -127,13 +135,25 @@ public class NotificationSbnAdapter extends
} }
public void addSbn(StatusBarNotification sbn) { public void addSbn(StatusBarNotification sbn) {
if (sbn.isGroup() && sbn.getNotification().isGroupSummary()) { if (!shouldShowSbn(sbn)) {
return; return;
} }
mValues.add(0, sbn); mValues.add(0, sbn);
notifyDataSetChanged(); notifyDataSetChanged();
} }
private boolean shouldShowSbn(StatusBarNotification sbn) {
// summaries are low content; don't bother showing them
if (sbn.isGroup() && sbn.getNotification().isGroupSummary()) {
return false;
}
// also don't show profile notifications if the profile is currently disabled
if (!mEnabledProfiles.contains(normalizeUserId(sbn))) {
return false;
}
return true;
}
private @NonNull CharSequence loadPackageLabel(String pkg) { private @NonNull CharSequence loadPackageLabel(String pkg) {
try { try {
ApplicationInfo info = mPm.getApplicationInfo(pkg, ApplicationInfo info = mPm.getApplicationInfo(pkg,