merge in jb-mr1-factory-release history after reset to jb-mr1-dev
diff --git a/src/java/com/google/android/mms/pdu/PduPersister.java b/src/java/com/google/android/mms/pdu/PduPersister.java
index 7178c6c..7e68b21 100644
--- a/src/java/com/google/android/mms/pdu/PduPersister.java
+++ b/src/java/com/google/android/mms/pdu/PduPersister.java
@@ -1323,11 +1323,14 @@
             switch (msgType) {
                 case PduHeaders.MESSAGE_TYPE_NOTIFICATION_IND:
                 case PduHeaders.MESSAGE_TYPE_RETRIEVE_CONF:
-                    // For received messages, we want to associate this message with the thread
-                    // composed of all the recipients. This includes the person who sent the
-                    // message or the FROM field in addition to the other people the message
-                    // was addressed to or the TO field.
                     loadRecipients(PduHeaders.FROM, recipients, addressMap, false);
+
+                    // For received messages when group MMS is enabled, we want to associate this
+                    // message with the thread composed of all the recipients -- all but our own
+                    // number, that is. This includes the person who sent the
+                    // message or the FROM field (above) in addition to the other people the message
+                    // was addressed to or the TO field. Our own number is in that TO field and
+                    // we have to ignore it in loadRecipients.
                     if (groupMmsEnabled) {
                         loadRecipients(PduHeaders.TO, recipients, addressMap, true);
                     }
@@ -1436,6 +1439,11 @@
         if (array == null) {
             return;
         }
+        // If the TO recipients is only a single address, then we can skip loadRecipients when
+        // we're excluding our own number because we know that address is our own.
+        if (excludeMyNumber && array.length == 1) {
+            return;
+        }
         String myNumber = excludeMyNumber ? mTelephonyManager.getLine1Number() : null;
         for (EncodedStringValue v : array) {
             if (v != null) {