Fix potential NPE when MessagingMessage's message is null
message.getMessage() is nullable because it may be recycled, so we have to add null check before calling its reference. This can affect several messaging related layout classes. Bug: 249260110 Test: manual and atest Change-Id: I9ac68ab0edca5a5a1a46acfae9bcd52be51ea612
This commit is contained in:
@@ -924,7 +924,8 @@ public class ConversationLayout extends FrameLayout
|
||||
message = messages.get(i - histSize);
|
||||
}
|
||||
boolean isNewGroup = currentGroup == null;
|
||||
Person sender = message.getMessage().getSenderPerson();
|
||||
Person sender =
|
||||
message.getMessage() == null ? null : message.getMessage().getSenderPerson();
|
||||
CharSequence key = getKey(sender);
|
||||
isNewGroup |= !TextUtils.equals(key, currentSenderKey);
|
||||
if (isNewGroup) {
|
||||
@@ -1187,7 +1188,8 @@ public class ConversationLayout extends FrameLayout
|
||||
return null;
|
||||
}
|
||||
final MessagingMessage messagingMessage = mMessages.get(mMessages.size() - 1);
|
||||
final CharSequence text = messagingMessage.getMessage().getText();
|
||||
final CharSequence text = messagingMessage.getMessage() == null ? null
|
||||
: messagingMessage.getMessage().getText();
|
||||
if (text == null && messagingMessage instanceof MessagingImageMessage) {
|
||||
final String unformatted =
|
||||
getResources().getString(R.string.conversation_single_line_image_placeholder);
|
||||
|
||||
@@ -492,7 +492,9 @@ public class MessagingGroup extends LinearLayout implements MessagingLinearLayou
|
||||
int color = mSendingSpinnerContainer.getVisibility() == View.VISIBLE
|
||||
? mSendingTextColor : mTextColor;
|
||||
for (MessagingMessage message : mMessages) {
|
||||
message.setColor(message.getMessage().isRemoteInputHistory() ? color : mTextColor);
|
||||
final boolean isRemoteInputHistory =
|
||||
message.getMessage() != null && message.getMessage().isRemoteInputHistory();
|
||||
message.setColor(isRemoteInputHistory ? color : mTextColor);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -470,7 +470,8 @@ public class MessagingLayout extends FrameLayout
|
||||
message = messages.get(i - histSize);
|
||||
}
|
||||
boolean isNewGroup = currentGroup == null;
|
||||
Person sender = message.getMessage().getSenderPerson();
|
||||
Person sender =
|
||||
message.getMessage() == null ? null : message.getMessage().getSenderPerson();
|
||||
CharSequence key = sender == null ? null
|
||||
: sender.getKey() == null ? sender.getName() : sender.getKey();
|
||||
isNewGroup |= !TextUtils.equals(key, currentSenderKey);
|
||||
|
||||
Reference in New Issue
Block a user