Merge "Avoid security exception when requesting badging"
diff --git a/core/java/android/content/pm/LauncherApps.java b/core/java/android/content/pm/LauncherApps.java
index 300955a..5187181 100644
--- a/core/java/android/content/pm/LauncherApps.java
+++ b/core/java/android/content/pm/LauncherApps.java
@@ -176,6 +176,9 @@
      */
     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 6392bd4..031cba7 100644
--- a/core/java/android/os/UserManager.java
+++ b/core/java/android/os/UserManager.java
@@ -524,15 +524,14 @@
 
     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<UserInfo> 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) {