From 9c97af9b83807743135b553893fb7ea209506631 Mon Sep 17 00:00:00 2001 From: Taesu Lee Date: Tue, 15 Sep 2020 16:34:54 +0900 Subject: [PATCH] Fix creating a new conversation including own number If a device own phone number is unknown and there is only a single address in all TO and CC for incoming MMS, ignore the address as it is device own phone number. Test: Manual Change-Id: I26de39bd3b71d3ad391372f35cfce0bd5c7b66ed Signed-off-by: Taesu Lee --- .../messaging/mmslib/pdu/PduPersister.java | 20 +++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/src/com/android/messaging/mmslib/pdu/PduPersister.java b/src/com/android/messaging/mmslib/pdu/PduPersister.java index d1175ab..6615d30 100644 --- a/src/com/android/messaging/mmslib/pdu/PduPersister.java +++ b/src/com/android/messaging/mmslib/pdu/PduPersister.java @@ -1415,11 +1415,11 @@ public class PduPersister { // For received messages (whether group MMS is enabled or not) we want to // associate this message with the thread composed of all the recipients - // EXCLUDING our own number. This includes the person who sent the - // message (the FROM field above) in addition to the other people the message - // was addressed TO (or CC fields to address group messaging compatibility - // issues with devices that place numbers in this field). Typically our own - // number is in the TO/CC field so we have to remove it in loadRecipients. + // EXCLUDING our own number. This includes the person who sent the message + // (the FROM field above) in addition to the other people the message was + // addressed TO (or CC fields to address group messaging compatibility issues + // with devices that place numbers in this field). Typically our own number is + // in the TO/CC field so we have to remove it in checkAndLoadToCcRecipients. checkAndLoadToCcRecipients(recipients, addressMap, subPhoneNumber); break; case PduHeaders.MESSAGE_TYPE_SEND_REQ: @@ -1582,9 +1582,17 @@ public class PduPersister { } } } + + // If selfNumber is unavailable and there is only a single address in all TO and CC, we can + // skip adding it into recipients as assuming it is my own phone number. + final boolean isSelfNumberUnavailable = TextUtils.isEmpty(selfNumber); + if (isSelfNumberUnavailable && numbers.size() == 1) { + return; + } + for (final String number : numbers) { // Only add numbers which aren't my own number. - if (TextUtils.isEmpty(selfNumber) || !PhoneNumberUtils.compare(number, selfNumber)) { + if (isSelfNumberUnavailable || !PhoneNumberUtils.compare(number, selfNumber)) { if (!recipients.contains(number)) { // Only add numbers which aren't already included. recipients.add(number);