Handle density request in LauncherActivityInfo
Change-Id: I4e8dc8ef1454b3881bdb80ae118e2d0d306642f3
diff --git a/core/java/android/content/pm/LauncherActivityInfo.java b/core/java/android/content/pm/LauncherActivityInfo.java
index 92b9146..01cd9f3 100644
--- a/core/java/android/content/pm/LauncherActivityInfo.java
+++ b/core/java/android/content/pm/LauncherActivityInfo.java
@@ -19,6 +19,8 @@
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 @@
*/
public class LauncherActivityInfo {
private static final boolean DEBUG = false;
+ private static final String TAG = "LauncherActivityInfo";
+
private final PackageManager mPm;
private final UserManager mUm;
@@ -126,20 +130,29 @@
* @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);
- }
- Drawable originalIcon = mActivityInfo.loadIcon(mPm);
- if (originalIcon == null) {
- if (DEBUG) {
- Log.w("LauncherActivityInfo", "Couldn't find icon for activity");
+ 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) {
}
- originalIcon = mPm.getDefaultActivityIcon();
+ } catch (NameNotFoundException nnfe) {
}
+
+ if (originalIcon == null) {
+ 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;
}