Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ad1a153a authored by Anna Zappone's avatar Anna Zappone
Browse files

Update user profiles on user unavailable

Fix crash calling into ShortcutService when user 10 is locked.

Change-Id: Id5c35a8af52b4645cbe0296d77b7beb6da50ebde
Test: none
Bug: 182575662
parent 44772ed4
Loading
Loading
Loading
Loading
+9 −2
Original line number Diff line number Diff line
@@ -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);
                    }
                }
+2 −0
Original line number Diff line number Diff line
@@ -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);