properly handle sending reply messages through the top notification

This commit is contained in:
tibbi 2021-03-15 23:10:59 +01:00
parent c73f1f2dfe
commit 6c9d25d16f
3 changed files with 20 additions and 9 deletions

View File

@ -3,17 +3,14 @@ package com.simplemobiletools.smsmessenger.receivers
import android.content.BroadcastReceiver import android.content.BroadcastReceiver
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
import androidx.core.app.NotificationCompat
import androidx.core.app.RemoteInput import androidx.core.app.RemoteInput
import com.klinker.android.send_message.Settings import com.klinker.android.send_message.Settings
import com.klinker.android.send_message.Transaction import com.klinker.android.send_message.Transaction
import com.simplemobiletools.commons.extensions.notificationManager import com.simplemobiletools.commons.extensions.notificationManager
import com.simplemobiletools.commons.extensions.showErrorToast import com.simplemobiletools.commons.extensions.showErrorToast
import com.simplemobiletools.commons.helpers.ensureBackgroundThread import com.simplemobiletools.commons.helpers.ensureBackgroundThread
import com.simplemobiletools.smsmessenger.R
import com.simplemobiletools.smsmessenger.extensions.conversationsDB import com.simplemobiletools.smsmessenger.extensions.conversationsDB
import com.simplemobiletools.smsmessenger.extensions.markThreadMessagesRead import com.simplemobiletools.smsmessenger.extensions.markThreadMessagesRead
import com.simplemobiletools.smsmessenger.helpers.NOTIFICATION_CHANNEL
import com.simplemobiletools.smsmessenger.helpers.REPLY import com.simplemobiletools.smsmessenger.helpers.REPLY
import com.simplemobiletools.smsmessenger.helpers.THREAD_ID import com.simplemobiletools.smsmessenger.helpers.THREAD_ID
import com.simplemobiletools.smsmessenger.helpers.THREAD_NUMBER import com.simplemobiletools.smsmessenger.helpers.THREAD_NUMBER
@ -26,22 +23,24 @@ class DirectReplyReceiver : BroadcastReceiver() {
val settings = Settings() val settings = Settings()
settings.useSystemSending = true settings.useSystemSending = true
settings.deliveryReports = true
val transaction = Transaction(context, settings) val transaction = Transaction(context, settings)
val message = com.klinker.android.send_message.Message(msg, address) val message = com.klinker.android.send_message.Message(msg, address)
try { try {
val smsSentIntent = Intent(context, SmsStatusSentReceiver::class.java)
val deliveredIntent = Intent(context, SmsStatusDeliveredReceiver::class.java)
transaction.setExplicitBroadcastForSentSms(smsSentIntent)
transaction.setExplicitBroadcastForDeliveredSms(deliveredIntent)
transaction.sendNewMessage(message, threadId) transaction.sendNewMessage(message, threadId)
} catch (e: Exception) { } catch (e: Exception) {
context.showErrorToast(e) context.showErrorToast(e)
} }
val repliedNotification = NotificationCompat.Builder(context, NOTIFICATION_CHANNEL) context.notificationManager.cancel(threadId.hashCode())
.setSmallIcon(R.drawable.ic_messenger)
.setContentText(msg)
.build()
context.notificationManager.notify(threadId.hashCode(), repliedNotification)
ensureBackgroundThread { ensureBackgroundThread {
context.markThreadMessagesRead(threadId) context.markThreadMessagesRead(threadId)

View File

@ -41,6 +41,7 @@ class SmsStatusSentReceiver : SentReceiver() {
} else { } else {
Telephony.Sms.MESSAGE_TYPE_OUTBOX Telephony.Sms.MESSAGE_TYPE_OUTBOX
} }
context.updateMessageType(messageId, type) context.updateMessageType(messageId, type)
context.messagesDB.updateType(messageId, type) context.messagesDB.updateType(messageId, type)
refreshMessages() refreshMessages()

View File

@ -6,6 +6,8 @@ import android.net.Uri
import com.klinker.android.send_message.Settings import com.klinker.android.send_message.Settings
import com.klinker.android.send_message.Transaction import com.klinker.android.send_message.Transaction
import com.simplemobiletools.smsmessenger.extensions.getThreadId import com.simplemobiletools.smsmessenger.extensions.getThreadId
import com.simplemobiletools.smsmessenger.receivers.SmsStatusDeliveredReceiver
import com.simplemobiletools.smsmessenger.receivers.SmsStatusSentReceiver
class HeadlessSmsSendService : Service() { class HeadlessSmsSendService : Service() {
override fun onBind(intent: Intent?) = null override fun onBind(intent: Intent?) = null
@ -20,8 +22,17 @@ class HeadlessSmsSendService : Service() {
val text = intent.getStringExtra(Intent.EXTRA_TEXT) val text = intent.getStringExtra(Intent.EXTRA_TEXT)
val settings = Settings() val settings = Settings()
settings.useSystemSending = true settings.useSystemSending = true
settings.deliveryReports = true
val transaction = Transaction(this, settings) val transaction = Transaction(this, settings)
val message = com.klinker.android.send_message.Message(text, number) val message = com.klinker.android.send_message.Message(text, number)
val smsSentIntent = Intent(this, SmsStatusSentReceiver::class.java)
val deliveredIntent = Intent(this, SmsStatusDeliveredReceiver::class.java)
transaction.setExplicitBroadcastForSentSms(smsSentIntent)
transaction.setExplicitBroadcastForDeliveredSms(deliveredIntent)
transaction.sendNewMessage(message, getThreadId(number)) transaction.sendNewMessage(message, getThreadId(number))
} catch (ignored: Exception) { } catch (ignored: Exception) {
} }