diff --git a/core/java/android/util/IconDrawableFactory.java b/core/java/android/util/IconDrawableFactory.java index b07942ff7f9d8..6a6c2ce4838ee 100644 --- a/core/java/android/util/IconDrawableFactory.java +++ b/core/java/android/util/IconDrawableFactory.java @@ -21,7 +21,6 @@ import android.content.pm.ApplicationInfo; import android.content.pm.PackageItemInfo; import android.content.pm.PackageManager; import android.content.res.Resources; -import android.graphics.Color; import android.graphics.drawable.Drawable; import android.os.UserHandle; import android.os.UserManager; @@ -68,8 +67,7 @@ public class IconDrawableFactory { return icon; } - // Before badging, add shadow to adaptive icon if needed. - icon = mLauncherIcons.wrapIconDrawableWithShadow(icon); + icon = getShadowedIcon(icon); if (appInfo.isInstantApp()) { int badgeColor = Resources.getSystem().getColor( com.android.internal.R.color.instant_app_badge, null); @@ -85,6 +83,13 @@ public class IconDrawableFactory { return icon; } + /** + * Add shadow to the icon if {@link AdaptiveIconDrawable} + */ + public Drawable getShadowedIcon(Drawable icon) { + return mLauncherIcons.wrapIconDrawableWithShadow(icon); + } + // Should have enough colors to cope with UserManagerService.getMaxManagedProfiles() @VisibleForTesting public static final int[] CORP_BADGE_COLORS = new int[] { diff --git a/core/java/com/android/internal/app/ResolverActivity.java b/core/java/com/android/internal/app/ResolverActivity.java index 5c1bafdbca3f9..9a02b932339bf 100644 --- a/core/java/com/android/internal/app/ResolverActivity.java +++ b/core/java/com/android/internal/app/ResolverActivity.java @@ -50,6 +50,7 @@ import android.os.UserManager; import android.provider.MediaStore; import android.provider.Settings; import android.text.TextUtils; +import android.util.IconDrawableFactory; import android.util.Log; import android.util.Slog; import android.view.LayoutInflater; @@ -120,6 +121,8 @@ public class ResolverActivity extends Activity { /** See {@link #setRetainInOnStop}. */ private boolean mRetainInOnStop; + IconDrawableFactory mIconFactory; + private final PackageMonitor mPackageMonitor = new PackageMonitor() { @Override public void onSomePackagesChanged() { mAdapter.handlePackagesChanged(); @@ -330,6 +333,7 @@ public class ResolverActivity extends Activity { : MetricsProto.MetricsEvent.ACTION_SHOW_APP_DISAMBIG_NONE_FEATURED, intent.getAction() + ":" + intent.getType() + ":" + (categories != null ? Arrays.toString(categories.toArray()) : "")); + mIconFactory = IconDrawableFactory.newInstance(this, true); } /** @@ -468,20 +472,20 @@ public class ResolverActivity extends Activity { if (ri.resolvePackageName != null && ri.icon != 0) { dr = getIcon(mPm.getResourcesForApplication(ri.resolvePackageName), ri.icon); if (dr != null) { - return dr; + return mIconFactory.getShadowedIcon(dr); } } final int iconRes = ri.getIconResource(); if (iconRes != 0) { dr = getIcon(mPm.getResourcesForApplication(ri.activityInfo.packageName), iconRes); if (dr != null) { - return dr; + return mIconFactory.getShadowedIcon(dr); } } } catch (NameNotFoundException e) { Log.e(TAG, "Couldn't find resources for package", e); } - return ri.loadIcon(mPm); + return mIconFactory.getBadgedIcon(ri.activityInfo.applicationInfo); } @Override