From 19052d4f932f1da1a30940b0ef09ee02173e2059 Mon Sep 17 00:00:00 2001 From: moezbhatti Date: Fri, 25 Oct 2019 02:13:13 -0400 Subject: [PATCH] Fix MMS being stuck sending! Fixes #1401 --- .../moez/QKSMS/receiver/SmsDeliveredReceiver.kt | 7 +------ .../com/moez/QKSMS/receiver/SmsSentReceiver.kt | 14 +++----------- .../moez/QKSMS/repository/MessageRepositoryImpl.kt | 7 ++----- presentation/src/main/AndroidManifest.xml | 2 ++ 4 files changed, 8 insertions(+), 22 deletions(-) diff --git a/data/src/main/java/com/moez/QKSMS/receiver/SmsDeliveredReceiver.kt b/data/src/main/java/com/moez/QKSMS/receiver/SmsDeliveredReceiver.kt index e03bcdc0..83382c31 100644 --- a/data/src/main/java/com/moez/QKSMS/receiver/SmsDeliveredReceiver.kt +++ b/data/src/main/java/com/moez/QKSMS/receiver/SmsDeliveredReceiver.kt @@ -29,16 +29,11 @@ import javax.inject.Inject class SmsDeliveredReceiver : BroadcastReceiver() { - companion object { - const val ACTION = "com.moez.QKSMS.SMS_DELIVERED" - } - @Inject lateinit var markDelivered: MarkDelivered @Inject lateinit var markDeliveryFailed: MarkDeliveryFailed override fun onReceive(context: Context, intent: Intent) { AndroidInjection.inject(this, context) - context.unregisterReceiver(this) val id = intent.getLongExtra("id", 0L) @@ -57,4 +52,4 @@ class SmsDeliveredReceiver : BroadcastReceiver() { } } -} \ No newline at end of file +} diff --git a/data/src/main/java/com/moez/QKSMS/receiver/SmsSentReceiver.kt b/data/src/main/java/com/moez/QKSMS/receiver/SmsSentReceiver.kt index 1777dc7f..077e9f33 100644 --- a/data/src/main/java/com/moez/QKSMS/receiver/SmsSentReceiver.kt +++ b/data/src/main/java/com/moez/QKSMS/receiver/SmsSentReceiver.kt @@ -22,7 +22,6 @@ import android.app.Activity import android.content.BroadcastReceiver import android.content.Context import android.content.Intent -import android.telephony.SmsManager import com.moez.QKSMS.interactor.MarkFailed import com.moez.QKSMS.interactor.MarkSent import dagger.android.AndroidInjection @@ -30,16 +29,11 @@ import javax.inject.Inject class SmsSentReceiver : BroadcastReceiver() { - companion object { - const val ACTION = "com.moez.QKSMS.SMS_SENT" - } - @Inject lateinit var markSent: MarkSent @Inject lateinit var markFailed: MarkFailed override fun onReceive(context: Context, intent: Intent) { AndroidInjection.inject(this, context) - context.unregisterReceiver(this) val id = intent.getLongExtra("id", 0L) @@ -49,13 +43,11 @@ class SmsSentReceiver : BroadcastReceiver() { markSent.execute(id) { pendingResult.finish() } } - SmsManager.RESULT_ERROR_GENERIC_FAILURE, - SmsManager.RESULT_ERROR_NO_SERVICE, - SmsManager.RESULT_ERROR_NULL_PDU, - SmsManager.RESULT_ERROR_RADIO_OFF -> { + else -> { val pendingResult = goAsync() markFailed.execute(MarkFailed.Params(id, resultCode)) { pendingResult.finish() } } } } -} \ No newline at end of file + +} diff --git a/data/src/main/java/com/moez/QKSMS/repository/MessageRepositoryImpl.kt b/data/src/main/java/com/moez/QKSMS/repository/MessageRepositoryImpl.kt index 7ee92c86..3b38aac1 100644 --- a/data/src/main/java/com/moez/QKSMS/repository/MessageRepositoryImpl.kt +++ b/data/src/main/java/com/moez/QKSMS/repository/MessageRepositoryImpl.kt @@ -24,7 +24,6 @@ import android.content.ContentUris import android.content.ContentValues import android.content.Context import android.content.Intent -import android.content.IntentFilter import android.media.MediaScannerConnection import android.os.Build import android.os.Environment @@ -339,14 +338,12 @@ class MessageRepositoryImpl @Inject constructor( ?: arrayListOf() val sentIntents = parts.map { - context.registerReceiver(SmsSentReceiver(), IntentFilter(SmsSentReceiver.ACTION)) - val intent = Intent(SmsSentReceiver.ACTION).putExtra("id", message.id) + val intent = Intent(context, SmsSentReceiver::class.java).putExtra("id", message.id) PendingIntent.getBroadcast(context, message.id.toInt(), intent, PendingIntent.FLAG_UPDATE_CURRENT) } val deliveredIntents = parts.map { - context.registerReceiver(SmsDeliveredReceiver(), IntentFilter(SmsDeliveredReceiver.ACTION)) - val intent = Intent(SmsDeliveredReceiver.ACTION).putExtra("id", message.id) + val intent = Intent(context, SmsDeliveredReceiver::class.java).putExtra("id", message.id) val pendingIntent = PendingIntent .getBroadcast(context, message.id.toInt(), intent, PendingIntent.FLAG_UPDATE_CURRENT) if (prefs.delivery.get()) pendingIntent else null diff --git a/presentation/src/main/AndroidManifest.xml b/presentation/src/main/AndroidManifest.xml index 52fc8ea6..9301275c 100644 --- a/presentation/src/main/AndroidManifest.xml +++ b/presentation/src/main/AndroidManifest.xml @@ -136,6 +136,8 @@ + +