From 72cbb342a69217f2a2c0c63d0bb95dfe965409b5 Mon Sep 17 00:00:00 2001 From: darthpaul Date: Sun, 1 May 2022 03:33:47 +0100 Subject: [PATCH] handle sending group SMS - in Context.getMessages, split the sender number by spaces " " to get each contact. - apply update in the android-smsmms lib - do not pass threadId in Transaction.sendNewMessage --- .../smsmessenger/activities/ThreadActivity.kt | 2 +- .../simplemobiletools/smsmessenger/extensions/Context.kt | 9 ++++++--- .../smsmessenger/receivers/DirectReplyReceiver.kt | 2 +- .../smsmessenger/services/HeadlessSmsSendService.kt | 2 +- 4 files changed, 9 insertions(+), 6 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt index b96d4fc7..b1f7d218 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt @@ -829,7 +829,7 @@ class ThreadActivity : SimpleActivity() { transaction.setExplicitBroadcastForDeliveredSms(deliveredIntent) refreshedSinceSent = false - transaction.sendNewMessage(message, threadId) + transaction.sendNewMessage(message) thread_type_message.setText("") attachmentSelections.clear() thread_attachments_holder.beGone() diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Context.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Context.kt index 4f120ab5..d97c73d4 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Context.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Context.kt @@ -103,10 +103,13 @@ fun Context.getMessages(threadId: Long, getImageResolutions: Boolean): ArrayList val thread = cursor.getLongValue(Sms.THREAD_ID) val subscriptionId = cursor.getIntValue(Sms.SUBSCRIPTION_ID) val status = cursor.getIntValue(Sms.STATUS) - val phoneNumber = PhoneNumber(senderNumber, 0, "", senderNumber) - val participant = SimpleContact(0, 0, senderName, photoUri, arrayListOf(phoneNumber), ArrayList(), ArrayList()) + val participants = senderNumber.split(" ").filter { it.areDigitsOnly() }.map { number -> + val phoneNumber = PhoneNumber(number, 0, "", number) + val participantPhoto = getNameAndPhotoFromPhoneNumber(number) + SimpleContact(0, 0, participantPhoto.name, photoUri, arrayListOf(phoneNumber), ArrayList(), ArrayList()) + } val isMMS = false - val message = Message(id, body, type, status, arrayListOf(participant), date, read, thread, isMMS, null, senderName, photoUri, subscriptionId) + val message = Message(id, body, type, status, ArrayList(participants), date, read, thread, isMMS, null, senderName, photoUri, subscriptionId) messages.add(message) } diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/DirectReplyReceiver.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/DirectReplyReceiver.kt index 6c590b2b..4cc8470c 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/DirectReplyReceiver.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/DirectReplyReceiver.kt @@ -35,7 +35,7 @@ class DirectReplyReceiver : BroadcastReceiver() { transaction.setExplicitBroadcastForSentSms(smsSentIntent) transaction.setExplicitBroadcastForDeliveredSms(deliveredIntent) - transaction.sendNewMessage(message, threadId) + transaction.sendNewMessage(message) } catch (e: Exception) { context.showErrorToast(e) } diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/services/HeadlessSmsSendService.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/services/HeadlessSmsSendService.kt index 5f7dfc24..1ebf9d7a 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/services/HeadlessSmsSendService.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/services/HeadlessSmsSendService.kt @@ -30,7 +30,7 @@ class HeadlessSmsSendService : Service() { transaction.setExplicitBroadcastForSentSms(smsSentIntent) transaction.setExplicitBroadcastForDeliveredSms(deliveredIntent) - transaction.sendNewMessage(message, getThreadId(number)) + transaction.sendNewMessage(message) } catch (ignored: Exception) { }