diff --git a/src/com/android/settings/CredentialStorage.java b/src/com/android/settings/CredentialStorage.java
index 9d001b4..22e175b 100644
--- a/src/com/android/settings/CredentialStorage.java
+++ b/src/com/android/settings/CredentialStorage.java
@@ -344,13 +344,12 @@
 
             // Clear all the users credentials could have been installed in for this user.
             final UserManager um = (UserManager) getSystemService(USER_SERVICE);
-            for (UserInfo pi : um.getProfiles(UserHandle.getUserId(Process.myUid()))) {
+            for (int userId : um.getProfileIdsWithDisabled(UserHandle.myUserId())) {
                 for (int uid : SYSTEM_CREDENTIAL_UIDS) {
-                    mKeyStore.clearUid(UserHandle.getUid(pi.id, uid));
+                    mKeyStore.clearUid(UserHandle.getUid(userId, uid));
                 }
             }
 
-
             try {
                 KeyChainConnection keyChainConnection = KeyChain.bind(CredentialStorage.this);
                 try {
diff --git a/src/com/android/settings/Utils.java b/src/com/android/settings/Utils.java
index 84bb2dd..527194f 100644
--- a/src/com/android/settings/Utils.java
+++ b/src/com/android/settings/Utils.java
@@ -615,12 +615,10 @@
      * @return the managed profile id or UserHandle.USER_NULL if there is none.
      */
     public static int getManagedProfileId(UserManager um, int parentUserId) {
-        List<UserInfo> profiles = um.getProfiles(parentUserId);
-        int numProfiles = profiles.size();
-        for (int i = 0; i < numProfiles; ++i) {
-            UserInfo profile = profiles.get(i);
-            if (profile.id != parentUserId) {
-                return profile.id;
+        int[] profileIds = um.getProfileIdsWithDisabled(parentUserId);
+        for (int profileId : profileIds) {
+            if (profileId != parentUserId) {
+                return profileId;
             }
         }
         return UserHandle.USER_NULL;
