From bfd03422c0ead16fdcc72f213fe74df1cf812dd3 Mon Sep 17 00:00:00 2001 From: Julia Reynolds Date: Fri, 14 Feb 2020 14:19:25 -0500 Subject: [PATCH] Add app badges to conversation icons Test: atest, manual Fixes: 149573346 Change-Id: I79e688b7837c361a12f3272b4e9a23c2f378adbe --- res/values/dimens.xml | 1 + .../notification/NotificationBackend.java | 16 ++++++++++++---- .../ConversationListPreferenceController.java | 2 +- .../notification/app/NotificationSettings.java | 4 +++- 4 files changed, 17 insertions(+), 6 deletions(-) diff --git a/res/values/dimens.xml b/res/values/dimens.xml index ad5c2949fde..024569b3173 100755 --- a/res/values/dimens.xml +++ b/res/values/dimens.xml @@ -82,6 +82,7 @@ 14dp 26dp + 48dp 16dp 7dp diff --git a/src/com/android/settings/notification/NotificationBackend.java b/src/com/android/settings/notification/NotificationBackend.java index c8fb7e3aa6c..d6f89863b88 100644 --- a/src/com/android/settings/notification/NotificationBackend.java +++ b/src/com/android/settings/notification/NotificationBackend.java @@ -37,6 +37,8 @@ import android.content.pm.PackageManager; import android.content.pm.ParceledListSlice; import android.content.pm.ShortcutInfo; import android.content.pm.ShortcutManager; +import android.graphics.Bitmap; +import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.os.RemoteException; import android.os.ServiceManager; @@ -51,6 +53,7 @@ import androidx.annotation.VisibleForTesting; import com.android.settingslib.R; import com.android.settingslib.Utils; +import com.android.settingslib.notification.ConversationIconFactory; import com.android.settingslib.utils.StringUtil; import java.util.ArrayList; @@ -509,10 +512,15 @@ public class NotificationBackend { return null; } - public Drawable getConversationDrawable(Context context, ShortcutInfo info) { - LauncherApps la = context.getSystemService(LauncherApps.class); - return la.getShortcutBadgedIconDrawable(info, - context.getResources().getDisplayMetrics().densityDpi); + public Drawable getConversationDrawable(Context context, ShortcutInfo info, String pkg, + int uid) { + ConversationIconFactory iconFactory = new ConversationIconFactory(context, + context.getSystemService(LauncherApps.class), + context.getPackageManager(), IconDrawableFactory.newInstance(context), + context.getResources().getDimensionPixelSize( + R.dimen.conversation_icon_size)); + return new BitmapDrawable(context.getResources(), + iconFactory.getConversationBitmap(info, pkg, uid)); } public void requestPinShortcut(Context context, ShortcutInfo shortcutInfo) { diff --git a/src/com/android/settings/notification/app/ConversationListPreferenceController.java b/src/com/android/settings/notification/app/ConversationListPreferenceController.java index fa1b0504c44..dba70869017 100644 --- a/src/com/android/settings/notification/app/ConversationListPreferenceController.java +++ b/src/com/android/settings/notification/app/ConversationListPreferenceController.java @@ -127,7 +127,7 @@ public class ConversationListPreferenceController extends NotificationPreference conversation.getParentChannelLabel(), conversation.getGroupLabel()) : conversation.getParentChannelLabel()); if (si != null) { - pref.setIcon(mBackend.getConversationDrawable(mContext, si)); + pref.setIcon(mBackend.getConversationDrawable(mContext, si, mAppRow.pkg, mAppRow.uid)); } pref.setKey(conversation.getNotificationChannel().getId()); diff --git a/src/com/android/settings/notification/app/NotificationSettings.java b/src/com/android/settings/notification/app/NotificationSettings.java index 983ad2b20c4..e30b35ca6e2 100644 --- a/src/com/android/settings/notification/app/NotificationSettings.java +++ b/src/com/android/settings/notification/app/NotificationSettings.java @@ -33,6 +33,7 @@ import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; import android.content.pm.ResolveInfo; import android.content.pm.ShortcutInfo; +import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.os.UserHandle; @@ -203,7 +204,8 @@ abstract public class NotificationSettings extends DashboardFragment { mConversationInfo = mBackend.getConversationInfo( mContext, mPkg, mUid, mChannel.getConversationId()); if (mConversationInfo != null) { - mConversationDrawable = mBackend.getConversationDrawable(mContext, mConversationInfo); + mConversationDrawable = mBackend.getConversationDrawable( + mContext, mConversationInfo, mAppRow.pkg, mAppRow.uid); } }