diff options
author | Amith Yamasani <yamasani@google.com> | 2014-04-25 23:04:26 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2014-04-25 23:04:27 +0000 |
commit | 0150b48c4c4876a90b74826f864a4d864921166e (patch) | |
tree | 634e9459b6d90e00b60b87510ac8452f4db939c7 /core/java/android/content | |
parent | af6f910de73bfa4fc27c389eea3dbf608bbb72e1 (diff) | |
parent | 30acde7e90105d15b1639a24db3f9978e664dded (diff) | |
download | frameworks_base-0150b48c4c4876a90b74826f864a4d864921166e.zip frameworks_base-0150b48c4c4876a90b74826f864a4d864921166e.tar.gz frameworks_base-0150b48c4c4876a90b74826f864a4d864921166e.tar.bz2 |
Merge "Handle density request in LauncherActivityInfo"
Diffstat (limited to 'core/java/android/content')
-rw-r--r-- | core/java/android/content/pm/LauncherActivityInfo.java | 29 |
1 files changed, 21 insertions, 8 deletions
diff --git a/core/java/android/content/pm/LauncherActivityInfo.java b/core/java/android/content/pm/LauncherActivityInfo.java index 6bf3638..9087338 100644 --- a/core/java/android/content/pm/LauncherActivityInfo.java +++ b/core/java/android/content/pm/LauncherActivityInfo.java @@ -19,6 +19,8 @@ package android.content.pm; import android.content.ComponentName; import android.content.Context; import android.content.Intent; +import android.content.pm.PackageManager.NameNotFoundException; +import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Bitmap.Config; @@ -37,6 +39,8 @@ import android.util.Log; */ public class LauncherActivityInfo { private static final boolean DEBUG = false; + private static final String TAG = "LauncherActivityInfo"; + private final PackageManager mPm; private final UserManager mUm; @@ -134,20 +138,29 @@ public class LauncherActivityInfo { * @return A badged icon for the activity. */ public Drawable getBadgedIcon(int density) { - // TODO: Handle density - if (mUser.equals(android.os.Process.myUserHandle())) { - return mActivityInfo.loadIcon(mPm); + int iconRes = mActivityInfo.getIconResource(); + Resources resources = null; + Drawable originalIcon = null; + try { + resources = mPm.getResourcesForApplication(mActivityInfo.applicationInfo); + try { + if (density != 0) { + originalIcon = resources.getDrawableForDensity(iconRes, density); + } + } catch (Resources.NotFoundException e) { + } + } catch (NameNotFoundException nnfe) { } - Drawable originalIcon = mActivityInfo.loadIcon(mPm); + if (originalIcon == null) { - if (DEBUG) { - Log.w("LauncherActivityInfo", "Couldn't find icon for activity"); - } - originalIcon = mPm.getDefaultActivityIcon(); + originalIcon = mActivityInfo.loadIcon(mPm); } + if (originalIcon instanceof BitmapDrawable) { return mUm.getBadgedDrawableForUser( originalIcon, mUser); + } else { + Log.e(TAG, "Unable to create badged icon for " + mActivityInfo); } return originalIcon; } |