Fix missing icon for one-to-one convos
Fixes: 158089612
Test: manual
Change-Id: If588073ff1df557b755b844277e893e001822d79
(cherry picked from commit 3d360da16dc52a04f36d2c1c05c9d82cd8d76231)
diff --git a/core/java/android/app/Notification.java b/core/java/android/app/Notification.java
index 980fdb8..f881616 100644
--- a/core/java/android/app/Notification.java
+++ b/core/java/android/app/Notification.java
@@ -7625,7 +7625,6 @@
}
boolean isConversationLayout = mConversationType != CONVERSATION_TYPE_LEGACY;
boolean isImportantConversation = mConversationType == CONVERSATION_TYPE_IMPORTANT;
- Icon conversationIcon = mShortcutIcon;
Icon largeIcon = mBuilder.mN.mLargeIcon;
TemplateBindResult bindResult = new TemplateBindResult();
StandardTemplateParams p = mBuilder.mParams.reset()
@@ -7671,7 +7670,7 @@
"setConversationTitle", conversationTitle);
if (isConversationLayout) {
contentView.setIcon(R.id.status_bar_latest_event_content,
- "setConversationIcon", conversationIcon);
+ "setShortcutIcon", mShortcutIcon);
contentView.setBoolean(R.id.status_bar_latest_event_content,
"setIsImportantConversation", isImportantConversation);
}
diff --git a/core/java/com/android/internal/widget/ConversationLayout.java b/core/java/com/android/internal/widget/ConversationLayout.java
index 0d2dbef..1f2ae5f 100644
--- a/core/java/com/android/internal/widget/ConversationLayout.java
+++ b/core/java/com/android/internal/widget/ConversationLayout.java
@@ -161,6 +161,7 @@
private Rect mAppOpsTouchRect = new Rect();
private float mMinTouchSize;
private Icon mConversationIcon;
+ private Icon mShortcutIcon;
private View mAppNameDivider;
public ConversationLayout(@NonNull Context context) {
@@ -465,10 +466,9 @@
private void updateConversationLayout() {
// Set avatar and name
CharSequence conversationText = mConversationTitle;
+ mConversationIcon = mShortcutIcon;
if (mIsOneToOne) {
// Let's resolve the icon / text from the last sender
- mConversationIconView.setVisibility(VISIBLE);
- mConversationFacePile.setVisibility(GONE);
CharSequence userKey = getKey(mUser);
for (int i = mGroups.size() - 1; i >= 0; i--) {
MessagingGroup messagingGroup = mGroups.get(i);
@@ -490,22 +490,21 @@
break;
}
}
+ }
+ if (mConversationIcon == null) {
+ mConversationIcon = mLargeIcon;
+ }
+ if (mIsOneToOne || mConversationIcon != null) {
+ mConversationIconView.setVisibility(VISIBLE);
+ mConversationFacePile.setVisibility(GONE);
+ mConversationIconView.setImageIcon(mConversationIcon);
} else {
- if (mConversationIcon == null && mLargeIcon != null) {
- mConversationIcon = mLargeIcon;
- }
- if (mConversationIcon != null) {
- mConversationIconView.setVisibility(VISIBLE);
- mConversationFacePile.setVisibility(GONE);
- mConversationIconView.setImageIcon(mConversationIcon);
- } else {
- mConversationIconView.setVisibility(GONE);
- // This will also inflate it!
- mConversationFacePile.setVisibility(VISIBLE);
- // rebind the value to the inflated view instead of the stub
- mConversationFacePile = findViewById(R.id.conversation_face_pile);
- bindFacePile();
- }
+ mConversationIconView.setVisibility(GONE);
+ // This will also inflate it!
+ mConversationFacePile.setVisibility(VISIBLE);
+ // rebind the value to the inflated view instead of the stub
+ mConversationFacePile = findViewById(R.id.conversation_face_pile);
+ bindFacePile();
}
if (TextUtils.isEmpty(conversationText)) {
conversationText = mIsOneToOne ? mFallbackChatName : mFallbackGroupChatName;
@@ -712,7 +711,7 @@
}
@RemotableViewMethod
- public void setConversationIcon(Icon conversationIcon) {
+ public void setShortcutIcon(Icon conversationIcon) {
mConversationIcon = conversationIcon;
}