diff --git a/src/org/thoughtcrime/securesms/database/MmsDatabase.java b/src/org/thoughtcrime/securesms/database/MmsDatabase.java index 00fae72f63..037052accb 100644 --- a/src/org/thoughtcrime/securesms/database/MmsDatabase.java +++ b/src/org/thoughtcrime/securesms/database/MmsDatabase.java @@ -59,6 +59,7 @@ import org.thoughtcrime.securesms.recipients.RecipientFormattingException; import org.thoughtcrime.securesms.recipients.Recipients; import org.thoughtcrime.securesms.util.GroupUtil; import org.thoughtcrime.securesms.util.JsonUtils; +import org.thoughtcrime.securesms.util.ServiceUtil; import org.thoughtcrime.securesms.util.TextSecurePreferences; import org.thoughtcrime.securesms.util.Util; import org.whispersystems.jobqueue.JobManager; @@ -252,34 +253,36 @@ public class MmsDatabase extends MessagingDatabase { return DatabaseFactory.getThreadDatabase(context).getThreadIdFor(groupRecipients); } - Set group = new HashSet<>(); + String localNumber; + Set group = new HashSet<>(); - if (retrieved.getAddresses().getFrom() == null) { - throw new MmsException("FROM value in PduHeaders did not exist."); - } - - group.add(retrieved.getAddresses().getFrom()); + if (retrieved.getAddresses().getFrom() == null) { + throw new MmsException("FROM value in PduHeaders did not exist."); + } - TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); - String localNumber = telephonyManager.getLine1Number(); + group.add(retrieved.getAddresses().getFrom()); - if (localNumber == null) { - localNumber = TextSecurePreferences.getLocalNumber(context); - } + if (TextSecurePreferences.isPushRegistered(context)) { + localNumber = TextSecurePreferences.getLocalNumber(context); + } else { + localNumber = ServiceUtil.getTelephonyManager(context).getLine1Number(); + } - for (String cc : retrieved.getAddresses().getCc()) { - PhoneNumberUtil.MatchType match; + for (String cc : retrieved.getAddresses().getCc()) { + PhoneNumberUtil.MatchType match; - if (localNumber == null) match = PhoneNumberUtil.MatchType.NO_MATCH; - else match = PhoneNumberUtil.getInstance().isNumberMatch(localNumber, cc); + if (localNumber == null) match = PhoneNumberUtil.MatchType.NO_MATCH; + else match = PhoneNumberUtil.getInstance().isNumberMatch(localNumber, cc); - if (match == PhoneNumberUtil.MatchType.NO_MATCH || - match == PhoneNumberUtil.MatchType.NOT_A_NUMBER) - { - group.add(cc); - } + if (match == PhoneNumberUtil.MatchType.NO_MATCH || + match == PhoneNumberUtil.MatchType.NOT_A_NUMBER) + { + group.add(cc); } + } + + if (retrieved.getAddresses().getTo().size() > 1) { for (String to : retrieved.getAddresses().getTo()) { PhoneNumberUtil.MatchType match; @@ -291,11 +294,14 @@ public class MmsDatabase extends MessagingDatabase { { group.add(to); } + } + } - String recipientsList = Util.join(group, ","); - Recipients recipients = RecipientFactory.getRecipientsFromString(context, recipientsList, false); - return DatabaseFactory.getThreadDatabase(context).getThreadIdFor(recipients); + String recipientsList = Util.join(group, ","); + Recipients recipients = RecipientFactory.getRecipientsFromString(context, recipientsList, false); + + return DatabaseFactory.getThreadDatabase(context).getThreadIdFor(recipients); } private long getThreadIdFor(@NonNull NotificationInd notification) { diff --git a/src/org/thoughtcrime/securesms/util/ServiceUtil.java b/src/org/thoughtcrime/securesms/util/ServiceUtil.java index d9fd80c794..5420976d7f 100644 --- a/src/org/thoughtcrime/securesms/util/ServiceUtil.java +++ b/src/org/thoughtcrime/securesms/util/ServiceUtil.java @@ -4,6 +4,7 @@ import android.app.Activity; import android.app.NotificationManager; import android.content.Context; import android.net.ConnectivityManager; +import android.telephony.TelephonyManager; import android.view.WindowManager; import android.view.inputmethod.InputMethodManager; @@ -23,4 +24,8 @@ public class ServiceUtil { public static NotificationManager getNotificationManager(Context context) { return (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); } + + public static TelephonyManager getTelephonyManager(Context context) { + return (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE); + } }