diff --git a/core/java/android/os/IUserManager.aidl b/core/java/android/os/IUserManager.aidl index e426356dcc955..6746120f410d8 100644 --- a/core/java/android/os/IUserManager.aidl +++ b/core/java/android/os/IUserManager.aidl @@ -35,6 +35,10 @@ interface IUserManager { * DO NOT MOVE - UserManager.h depends on the ordering of this function. */ int getCredentialOwnerProfile(int userHandle); + int getProfileParentId(int userHandle); + /* + * END OF DO NOT MOVE + */ UserInfo createUser(in String name, int flags); UserInfo createProfileForUser(in String name, int flags, int userHandle, diff --git a/services/core/java/com/android/server/pm/UserManagerService.java b/services/core/java/com/android/server/pm/UserManagerService.java index 48d6cdc0f0355..00ac2fa54b858 100644 --- a/services/core/java/com/android/server/pm/UserManagerService.java +++ b/services/core/java/com/android/server/pm/UserManagerService.java @@ -717,6 +717,19 @@ public class UserManagerService extends IUserManager.Stub { } } + @Override + public int getProfileParentId(int userHandle) { + checkManageUsersPermission("get the profile parent"); + synchronized (mUsersLock) { + UserInfo profileParent = getProfileParentLU(userHandle); + if (profileParent == null) { + return userHandle; + } + + return profileParent.id; + } + } + private UserInfo getProfileParentLU(int userHandle) { UserInfo profile = getUserInfoLU(userHandle); if (profile == null) {