From 5abdbb656063160ff8df2306bd01feba0714d4c1 Mon Sep 17 00:00:00 2001 From: Amith Yamasani Date: Tue, 8 Apr 2014 17:23:46 -0700 Subject: [PATCH] Avoid security exception when requesting badging When requesting badged icons, use APIs that don't require the caller to have MANAGE_USERS permission. Change-Id: I218cdf5194f38f4affa1874a6fcb43a040ed5295 --- core/java/android/content/pm/LauncherApps.java | 3 +++ core/java/android/os/UserManager.java | 13 ++++++------- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/core/java/android/content/pm/LauncherApps.java b/core/java/android/content/pm/LauncherApps.java index 300955a059396..51871815d7dac 100644 --- a/core/java/android/content/pm/LauncherApps.java +++ b/core/java/android/content/pm/LauncherApps.java @@ -176,6 +176,9 @@ public class LauncherApps { */ public void startActivityForProfile(ComponentName component, Rect sourceBounds, Bundle opts, UserHandle user) { + if (DEBUG) { + Log.i(TAG, "StartActivityForProfile " + component + " " + user.getIdentifier()); + } try { mService.startActivityAsUser(component, sourceBounds, opts, user); } catch (RemoteException re) { diff --git a/core/java/android/os/UserManager.java b/core/java/android/os/UserManager.java index 6392bd442f949..031cba77f9343 100644 --- a/core/java/android/os/UserManager.java +++ b/core/java/android/os/UserManager.java @@ -524,15 +524,14 @@ public class UserManager { private int getBadgeResIdForUser(int userHandle) { // Return the framework-provided badge. - if (userHandle == UserHandle.myUserId()) { - UserInfo user = getUserInfo(userHandle); - /* TODO: Allow managed profiles for other users in the future */ - if (!user.isManagedProfile() - || user.profileGroupId != getUserInfo(UserHandle.USER_OWNER).profileGroupId) { - return 0; + List userProfiles = getProfiles(UserHandle.myUserId()); + for (UserInfo user : userProfiles) { + if (user.id == userHandle + && user.isManagedProfile()) { + return com.android.internal.R.drawable.ic_corp_badge; } } - return com.android.internal.R.drawable.ic_corp_badge; + return 0; } private Drawable getMergedDrawable(Drawable icon, Drawable badge) {