Check distraction flags in addition to suspension state
Test: xts in same topic Fixes: 136431772 Change-Id: I129fae6e1fc93d26ea027bd67f46ea664728e913
This commit is contained in:
@@ -2256,7 +2256,7 @@ public class NotificationManagerService extends SystemService {
|
||||
final int callingUid = Binder.getCallingUid();
|
||||
final boolean isSystemToast = isCallerSystemOrPhone()
|
||||
|| PackageManagerService.PLATFORM_PACKAGE_NAME.equals(pkg);
|
||||
final boolean isPackageSuspended = isPackageSuspendedForUser(pkg, callingUid);
|
||||
final boolean isPackageSuspended = isPackagePaused(pkg);
|
||||
final boolean notificationsDisabledForPackage = !areNotificationsEnabledForPackage(pkg,
|
||||
callingUid);
|
||||
|
||||
@@ -4104,17 +4104,7 @@ public class NotificationManagerService extends SystemService {
|
||||
Preconditions.checkNotNull(pkg);
|
||||
checkCallerIsSameApp(pkg);
|
||||
|
||||
boolean isPaused;
|
||||
|
||||
final PackageManagerInternal pmi = LocalServices.getService(
|
||||
PackageManagerInternal.class);
|
||||
int flags = pmi.getDistractingPackageRestrictions(
|
||||
pkg, Binder.getCallingUserHandle().getIdentifier());
|
||||
isPaused = ((flags & PackageManager.RESTRICTION_HIDE_NOTIFICATIONS) != 0);
|
||||
|
||||
isPaused |= isPackageSuspendedForUser(pkg, Binder.getCallingUid());
|
||||
|
||||
return isPaused;
|
||||
return isPackagePausedOrSuspended(pkg, Binder.getCallingUid());
|
||||
}
|
||||
|
||||
private void verifyPrivilegedListener(INotificationListener token, UserHandle user,
|
||||
@@ -5375,11 +5365,18 @@ public class NotificationManagerService extends SystemService {
|
||||
}
|
||||
|
||||
@GuardedBy("mNotificationLock")
|
||||
private boolean isPackageSuspendedLocked(NotificationRecord r) {
|
||||
final String pkg = r.sbn.getPackageName();
|
||||
final int callingUid = r.sbn.getUid();
|
||||
boolean isPackagePausedOrSuspended(String pkg, int uid) {
|
||||
boolean isPaused;
|
||||
|
||||
return isPackageSuspendedForUser(pkg, callingUid);
|
||||
final PackageManagerInternal pmi = LocalServices.getService(
|
||||
PackageManagerInternal.class);
|
||||
int flags = pmi.getDistractingPackageRestrictions(
|
||||
pkg, Binder.getCallingUserHandle().getIdentifier());
|
||||
isPaused = ((flags & PackageManager.RESTRICTION_HIDE_NOTIFICATIONS) != 0);
|
||||
|
||||
isPaused |= isPackageSuspendedForUser(pkg, uid);
|
||||
|
||||
return isPaused;
|
||||
}
|
||||
|
||||
protected class PostNotificationRunnable implements Runnable {
|
||||
@@ -5412,7 +5409,8 @@ public class NotificationManagerService extends SystemService {
|
||||
return;
|
||||
}
|
||||
|
||||
final boolean isPackageSuspended = isPackageSuspendedLocked(r);
|
||||
final boolean isPackageSuspended =
|
||||
isPackagePausedOrSuspended(r.sbn.getPackageName(), r.getUid());
|
||||
r.setHidden(isPackageSuspended);
|
||||
if (isPackageSuspended) {
|
||||
mUsageStats.registerSuspendedByAdmin(r);
|
||||
|
||||
Reference in New Issue
Block a user