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:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user