Loading core/java/android/app/ApplicationPackageManager.java +5 −11 Original line number Diff line number Diff line Loading @@ -1147,7 +1147,7 @@ public class ApplicationPackageManager extends PackageManager { } private Drawable getManagedProfileIconForDensity(UserHandle user, int drawableId, int density) { UserInfo userInfo = getUserIfProfile(user.getIdentifier()); UserInfo userInfo = getUserInfo(user.getIdentifier()); if (userInfo != null && userInfo.isManagedProfile()) { return getDrawableForDensity(drawableId, density); } Loading @@ -1156,7 +1156,7 @@ public class ApplicationPackageManager extends PackageManager { @Override public CharSequence getUserBadgedLabel(CharSequence label, UserHandle user) { UserInfo userInfo = getUserIfProfile(user.getIdentifier()); UserInfo userInfo = getUserInfo(user.getIdentifier()); if (userInfo != null && userInfo.isManagedProfile()) { return Resources.getSystem().getString( com.android.internal.R.string.managed_profile_label_badge, label); Loading Loading @@ -2252,21 +2252,15 @@ public class ApplicationPackageManager extends PackageManager { private int getBadgeResIdForUser(int userHandle) { // Return the framework-provided badge. UserInfo userInfo = getUserIfProfile(userHandle); UserInfo userInfo = getUserInfo(userHandle); if (userInfo != null && userInfo.isManagedProfile()) { return com.android.internal.R.drawable.ic_corp_icon_badge; } return 0; } private UserInfo getUserIfProfile(int userHandle) { List<UserInfo> userProfiles = getUserManager().getProfiles(mContext.getUserId()); for (UserInfo user : userProfiles) { if (user.id == userHandle) { return user; } } return null; private UserInfo getUserInfo(int userHandle) { return getUserManager().getUserInfo(userHandle); } /** {@hide} */ Loading core/java/android/app/Notification.java +3 −10 Original line number Diff line number Diff line Loading @@ -3173,16 +3173,9 @@ public class Notification implements Parcelable } private void bindHeaderAppName(RemoteViews contentView) { PackageManager packageManager = mContext.getPackageManager(); ApplicationInfo info = null; try { info = packageManager.getApplicationInfo(mContext.getApplicationInfo().packageName, 0); } catch (final NameNotFoundException e) { return; } CharSequence appName = info != null ? packageManager.getApplicationLabel(info) : null; CharSequence appName = mContext.getPackageManager() .getApplicationLabel(mContext.getApplicationInfo()); if (TextUtils.isEmpty(appName)) { return; } Loading core/java/android/content/pm/PackageManager.java +2 −4 Original line number Diff line number Diff line Loading @@ -4387,10 +4387,8 @@ public abstract class PackageManager { int badgeDensity); /** * If the target user is a managed profile of the calling user or if the * target user is the caller and is itself a managed profile, then this * returns a badged copy of the given icon to be able to distinguish it from * the original icon. For badging an arbitrary drawable use * If the target user is a managed profile, then this returns a badged copy of the given icon * to be able to distinguish it from the original icon. For badging an arbitrary drawable use * {@link #getUserBadgedDrawableForDensity( * android.graphics.drawable.Drawable, UserHandle, android.graphics.Rect, int)}. * <p> Loading core/java/android/os/UserManager.java +2 −1 Original line number Diff line number Diff line Loading @@ -972,7 +972,8 @@ public class UserManager { /** * Returns the UserInfo object describing a specific user. * Requires {@link android.Manifest.permission#MANAGE_USERS} permission. * Requires {@link android.Manifest.permission#MANAGE_USERS} permission or the caller is * in the same profile group of target user. * @param userHandle the user handle of the user whose information is being requested. * @return the UserInfo object for a specific user. * @hide Loading services/core/java/com/android/server/pm/UserManagerService.java +21 −6 Original line number Diff line number Diff line Loading @@ -641,7 +641,12 @@ public class UserManagerService extends IUserManager.Stub { @Override public UserInfo getUserInfo(int userId) { checkManageUsersPermission("query user"); if (!hasManageUsersPermission() && !isSameProfileGroupLP(UserHandle.getCallingUserId(), userId)) { throw new SecurityException( "You need MANAGE_USERS permission to: query users outside profile group"); } synchronized (mUsersLock) { return getUserInfoLU(userId); } Loading Loading @@ -1196,17 +1201,27 @@ public class UserManagerService extends IUserManager.Stub { * * @param message used as message if SecurityException is thrown * @throws SecurityException if the caller is not system or root * @see #hasManageUsersPermission() */ private static final void checkManageUsersPermission(String message) { final int uid = Binder.getCallingUid(); if (!UserHandle.isSameApp(uid, Process.SYSTEM_UID) && uid != Process.ROOT_UID && ActivityManager.checkComponentPermission( android.Manifest.permission.MANAGE_USERS, uid, -1, true) != PackageManager.PERMISSION_GRANTED) { if (!hasManageUsersPermission()) { throw new SecurityException("You need MANAGE_USERS permission to: " + message); } } /** * @return whether the calling UID is system UID or root's UID or the calling app has the * {@link android.Manifest.permission#MANAGE_USERS MANAGE_USERS}. */ private static final boolean hasManageUsersPermission() { final int callingUid = Binder.getCallingUid(); return UserHandle.isSameApp(callingUid, Process.SYSTEM_UID) || callingUid == Process.ROOT_UID || ActivityManager.checkComponentPermission( android.Manifest.permission.MANAGE_USERS, callingUid, -1, true) == PackageManager.PERMISSION_GRANTED; } /** * Enforces that only the system UID or root's UID (on any user) can make certain calls to the * UserManager. Loading Loading
core/java/android/app/ApplicationPackageManager.java +5 −11 Original line number Diff line number Diff line Loading @@ -1147,7 +1147,7 @@ public class ApplicationPackageManager extends PackageManager { } private Drawable getManagedProfileIconForDensity(UserHandle user, int drawableId, int density) { UserInfo userInfo = getUserIfProfile(user.getIdentifier()); UserInfo userInfo = getUserInfo(user.getIdentifier()); if (userInfo != null && userInfo.isManagedProfile()) { return getDrawableForDensity(drawableId, density); } Loading @@ -1156,7 +1156,7 @@ public class ApplicationPackageManager extends PackageManager { @Override public CharSequence getUserBadgedLabel(CharSequence label, UserHandle user) { UserInfo userInfo = getUserIfProfile(user.getIdentifier()); UserInfo userInfo = getUserInfo(user.getIdentifier()); if (userInfo != null && userInfo.isManagedProfile()) { return Resources.getSystem().getString( com.android.internal.R.string.managed_profile_label_badge, label); Loading Loading @@ -2252,21 +2252,15 @@ public class ApplicationPackageManager extends PackageManager { private int getBadgeResIdForUser(int userHandle) { // Return the framework-provided badge. UserInfo userInfo = getUserIfProfile(userHandle); UserInfo userInfo = getUserInfo(userHandle); if (userInfo != null && userInfo.isManagedProfile()) { return com.android.internal.R.drawable.ic_corp_icon_badge; } return 0; } private UserInfo getUserIfProfile(int userHandle) { List<UserInfo> userProfiles = getUserManager().getProfiles(mContext.getUserId()); for (UserInfo user : userProfiles) { if (user.id == userHandle) { return user; } } return null; private UserInfo getUserInfo(int userHandle) { return getUserManager().getUserInfo(userHandle); } /** {@hide} */ Loading
core/java/android/app/Notification.java +3 −10 Original line number Diff line number Diff line Loading @@ -3173,16 +3173,9 @@ public class Notification implements Parcelable } private void bindHeaderAppName(RemoteViews contentView) { PackageManager packageManager = mContext.getPackageManager(); ApplicationInfo info = null; try { info = packageManager.getApplicationInfo(mContext.getApplicationInfo().packageName, 0); } catch (final NameNotFoundException e) { return; } CharSequence appName = info != null ? packageManager.getApplicationLabel(info) : null; CharSequence appName = mContext.getPackageManager() .getApplicationLabel(mContext.getApplicationInfo()); if (TextUtils.isEmpty(appName)) { return; } Loading
core/java/android/content/pm/PackageManager.java +2 −4 Original line number Diff line number Diff line Loading @@ -4387,10 +4387,8 @@ public abstract class PackageManager { int badgeDensity); /** * If the target user is a managed profile of the calling user or if the * target user is the caller and is itself a managed profile, then this * returns a badged copy of the given icon to be able to distinguish it from * the original icon. For badging an arbitrary drawable use * If the target user is a managed profile, then this returns a badged copy of the given icon * to be able to distinguish it from the original icon. For badging an arbitrary drawable use * {@link #getUserBadgedDrawableForDensity( * android.graphics.drawable.Drawable, UserHandle, android.graphics.Rect, int)}. * <p> Loading
core/java/android/os/UserManager.java +2 −1 Original line number Diff line number Diff line Loading @@ -972,7 +972,8 @@ public class UserManager { /** * Returns the UserInfo object describing a specific user. * Requires {@link android.Manifest.permission#MANAGE_USERS} permission. * Requires {@link android.Manifest.permission#MANAGE_USERS} permission or the caller is * in the same profile group of target user. * @param userHandle the user handle of the user whose information is being requested. * @return the UserInfo object for a specific user. * @hide Loading
services/core/java/com/android/server/pm/UserManagerService.java +21 −6 Original line number Diff line number Diff line Loading @@ -641,7 +641,12 @@ public class UserManagerService extends IUserManager.Stub { @Override public UserInfo getUserInfo(int userId) { checkManageUsersPermission("query user"); if (!hasManageUsersPermission() && !isSameProfileGroupLP(UserHandle.getCallingUserId(), userId)) { throw new SecurityException( "You need MANAGE_USERS permission to: query users outside profile group"); } synchronized (mUsersLock) { return getUserInfoLU(userId); } Loading Loading @@ -1196,17 +1201,27 @@ public class UserManagerService extends IUserManager.Stub { * * @param message used as message if SecurityException is thrown * @throws SecurityException if the caller is not system or root * @see #hasManageUsersPermission() */ private static final void checkManageUsersPermission(String message) { final int uid = Binder.getCallingUid(); if (!UserHandle.isSameApp(uid, Process.SYSTEM_UID) && uid != Process.ROOT_UID && ActivityManager.checkComponentPermission( android.Manifest.permission.MANAGE_USERS, uid, -1, true) != PackageManager.PERMISSION_GRANTED) { if (!hasManageUsersPermission()) { throw new SecurityException("You need MANAGE_USERS permission to: " + message); } } /** * @return whether the calling UID is system UID or root's UID or the calling app has the * {@link android.Manifest.permission#MANAGE_USERS MANAGE_USERS}. */ private static final boolean hasManageUsersPermission() { final int callingUid = Binder.getCallingUid(); return UserHandle.isSameApp(callingUid, Process.SYSTEM_UID) || callingUid == Process.ROOT_UID || ActivityManager.checkComponentPermission( android.Manifest.permission.MANAGE_USERS, callingUid, -1, true) == PackageManager.PERMISSION_GRANTED; } /** * Enforces that only the system UID or root's UID (on any user) can make certain calls to the * UserManager. Loading