diff options
-rw-r--r-- | res/values/config.xml | 3 | ||||
-rw-r--r-- | src/com/android/launcher3/dragndrop/DragView.java | 6 | ||||
-rw-r--r-- | src/com/android/launcher3/graphics/LauncherIcons.java | 9 | ||||
-rw-r--r-- | src/com/android/launcher3/shortcuts/ShortcutInfoCompat.java | 14 |
4 files changed, 24 insertions, 8 deletions
diff --git a/res/values/config.xml b/res/values/config.xml index f48d47406..209620038 100644 --- a/res/values/config.xml +++ b/res/values/config.xml @@ -101,6 +101,9 @@ <!-- Package name of the default wallpaper picker. --> <string name="wallpaper_picker_package" translatable="false"></string> + <!-- Whitelisted package to retrieve packagename for badge. Can be empty. --> + <string name="shortcutinfocompat_badgepkg_whitelist" translatable="false"></string> + <!-- View ID to use for QSB widget --> <item type="id" name="qsb_widget" /> diff --git a/src/com/android/launcher3/dragndrop/DragView.java b/src/com/android/launcher3/dragndrop/DragView.java index 973226117..a59b8996b 100644 --- a/src/com/android/launcher3/dragndrop/DragView.java +++ b/src/com/android/launcher3/dragndrop/DragView.java @@ -369,9 +369,9 @@ public class DragView extends View { return new FixedSizeEmptyDrawable(iconSize); } ShortcutInfoCompat si = (ShortcutInfoCompat) obj; - Bitmap badge = LauncherIcons.getShortcutInfoBadge(si, appState.getIconCache()) - .iconBitmap; - + LauncherIcons li = LauncherIcons.obtain(appState.getContext()); + Bitmap badge = li.getShortcutInfoBadge(si, appState.getIconCache()).iconBitmap; + li.recycle(); float badgeSize = mLauncher.getResources().getDimension(R.dimen.profile_badge_size); float insetFraction = (iconSize - badgeSize) / iconSize; return new InsetDrawable(new FastBitmapDrawable(badge), diff --git a/src/com/android/launcher3/graphics/LauncherIcons.java b/src/com/android/launcher3/graphics/LauncherIcons.java index 0c9f4d9f0..34fc921a6 100644 --- a/src/com/android/launcher3/graphics/LauncherIcons.java +++ b/src/com/android/launcher3/graphics/LauncherIcons.java @@ -356,10 +356,11 @@ public class LauncherIcons implements AutoCloseable { return result; } - public static ItemInfoWithIcon getShortcutInfoBadge( - ShortcutInfoCompat shortcutInfo, IconCache cache) { + public ItemInfoWithIcon getShortcutInfoBadge(ShortcutInfoCompat shortcutInfo, IconCache cache) { ComponentName cn = shortcutInfo.getActivity(); - if (cn != null) { + String badgePkg = shortcutInfo.getBadgePackage(mContext); + boolean hasBadgePkgSet = !badgePkg.equals(shortcutInfo.getPackage()); + if (cn != null && !hasBadgePkgSet) { // Get the app info for the source activity. AppInfo appInfo = new AppInfo(); appInfo.user = shortcutInfo.getUserHandle(); @@ -370,7 +371,7 @@ public class LauncherIcons implements AutoCloseable { cache.getTitleAndIcon(appInfo, false); return appInfo; } else { - PackageItemInfo pkgInfo = new PackageItemInfo(shortcutInfo.getPackage()); + PackageItemInfo pkgInfo = new PackageItemInfo(badgePkg); cache.getTitleAndIconForApp(pkgInfo, false); return pkgInfo; } diff --git a/src/com/android/launcher3/shortcuts/ShortcutInfoCompat.java b/src/com/android/launcher3/shortcuts/ShortcutInfoCompat.java index 9c91c87b2..325777d7f 100644 --- a/src/com/android/launcher3/shortcuts/ShortcutInfoCompat.java +++ b/src/com/android/launcher3/shortcuts/ShortcutInfoCompat.java @@ -18,11 +18,14 @@ package com.android.launcher3.shortcuts; import android.annotation.TargetApi; import android.content.ComponentName; +import android.content.Context; import android.content.Intent; import android.content.pm.ShortcutInfo; import android.os.Build; import android.os.UserHandle; +import com.android.launcher3.R; + /** * Wrapper class for {@link android.content.pm.ShortcutInfo}, representing deep shortcuts into apps. * @@ -31,8 +34,8 @@ import android.os.UserHandle; @TargetApi(Build.VERSION_CODES.N) public class ShortcutInfoCompat { private static final String INTENT_CATEGORY = "com.android.launcher3.DEEP_SHORTCUT"; + private static final String EXTRA_BADGEPKG = "badge_package"; public static final String EXTRA_SHORTCUT_ID = "shortcut_id"; - private ShortcutInfo mShortcutInfo; public ShortcutInfoCompat(ShortcutInfo shortcutInfo) { @@ -57,6 +60,15 @@ public class ShortcutInfoCompat { return mShortcutInfo.getPackage(); } + public String getBadgePackage(Context context) { + String whitelistedPkg = context.getString(R.string.shortcutinfocompat_badgepkg_whitelist); + if (whitelistedPkg.equals(getPackage()) + && mShortcutInfo.getExtras().containsKey(EXTRA_BADGEPKG)) { + return mShortcutInfo.getExtras().getString(EXTRA_BADGEPKG); + } + return getPackage(); + } + public String getId() { return mShortcutInfo.getId(); } |