diff --git a/services/core/java/com/android/server/notification/ManagedServices.java b/services/core/java/com/android/server/notification/ManagedServices.java index c4a59c2655a25..73c71d2f51d5c 100644 --- a/services/core/java/com/android/server/notification/ManagedServices.java +++ b/services/core/java/com/android/server/notification/ManagedServices.java @@ -1770,10 +1770,17 @@ abstract public class ManagedServices { UserManager userManager = (UserManager) context.getSystemService(Context.USER_SERVICE); if (userManager != null) { int currentUserId = ActivityManager.getCurrentUser(); - List profiles = userManager.getProfiles(currentUserId); + List unlockedProfiles = new ArrayList<>(); + for (UserInfo user : userManager.getProfiles(currentUserId)) { + // Dependencies throw if we call APIs on a locked user. Only include + // unlocked users. + if (userManager.isUserUnlocked(user.id)) { + unlockedProfiles.add(user); + } + } synchronized (mCurrentProfiles) { mCurrentProfiles.clear(); - for (UserInfo user : profiles) { + for (UserInfo user : unlockedProfiles) { mCurrentProfiles.put(user.id, user); } } diff --git a/services/core/java/com/android/server/notification/NotificationManagerService.java b/services/core/java/com/android/server/notification/NotificationManagerService.java index 2f4cbd558fb90..7792bc06edd59 100755 --- a/services/core/java/com/android/server/notification/NotificationManagerService.java +++ b/services/core/java/com/android/server/notification/NotificationManagerService.java @@ -1695,6 +1695,8 @@ public class NotificationManagerService extends SystemService { } } else if (action.equals(Intent.ACTION_MANAGED_PROFILE_UNAVAILABLE)) { int userHandle = intent.getIntExtra(Intent.EXTRA_USER_HANDLE, -1); + // Work profile user may now be locked. Refresh cache. + mUserProfiles.updateCache(context); if (userHandle >= 0) { cancelAllNotificationsInt(MY_UID, MY_PID, null, null, 0, 0, true, userHandle, REASON_PROFILE_TURNED_OFF, null);