Watch out for deleted user when exiting async task
Fixes a problem where the async task can take a while to execute
and in the meantime the user can be removed. On exiting the async
task and updating the UI, make sure the user hasn't been deleted.
Bug: 18411181
Change-Id: I1831f3e53084c49e27557cb7aacec78c753a611b
diff --git a/src/com/android/settings/Utils.java b/src/com/android/settings/Utils.java
index e687beb..dc9e8a2 100644
--- a/src/com/android/settings/Utils.java
+++ b/src/com/android/settings/Utils.java
@@ -1023,4 +1023,21 @@
return null;
}
+ /**
+ * Queries for the UserInfo of a user. Returns null if the user doesn't exist (was removed).
+ * @param userManager Instance of UserManager
+ * @param checkUser The user to check the existence of.
+ * @return UserInfo of the user or null for non-existent user.
+ */
+ public static UserInfo getExistingUser(UserManager userManager, UserHandle checkUser) {
+ final List<UserInfo> users = userManager.getUsers(true /* excludeDying */);
+ final int checkUserId = checkUser.getIdentifier();
+ for (UserInfo user : users) {
+ if (user.id == checkUserId) {
+ return user;
+ }
+ }
+ return null;
+ }
+
}