Update user profiles on user unavailable

Fix crash calling into ShortcutService when user 10 is locked.

Change-Id: Id5c35a8af52b4645cbe0296d77b7beb6da50ebde
Test: none
Bug: 182575662
This commit is contained in:
Anna Zappone
2021-04-08 18:10:59 +01:00
parent 44772ed462
commit ad1a153a63
2 changed files with 11 additions and 2 deletions

View File

@@ -1770,10 +1770,17 @@ abstract public class ManagedServices {
UserManager userManager = (UserManager) context.getSystemService(Context.USER_SERVICE);
if (userManager != null) {
int currentUserId = ActivityManager.getCurrentUser();
List<UserInfo> profiles = userManager.getProfiles(currentUserId);
List<UserInfo> 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);
}
}

View File

@@ -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);