diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/SmsReceiver.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/SmsReceiver.kt index a6e7e6d0..cfb61959 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/SmsReceiver.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/SmsReceiver.kt @@ -3,6 +3,8 @@ package com.simplemobiletools.smsmessenger.receivers import android.content.BroadcastReceiver import android.content.Context import android.content.Intent +import android.os.Handler +import android.os.Looper import android.provider.Telephony import com.simplemobiletools.commons.extensions.isNumberBlocked import com.simplemobiletools.commons.helpers.ensureBackgroundThread @@ -21,25 +23,29 @@ class SmsReceiver : BroadcastReceiver() { val read = 0 val subscriptionId = intent.getIntExtra("subscription", -1) - messages.forEach { - address = it.originatingAddress ?: "" - subject = it.pseudoSubject - body += it.messageBody - date = Math.min(it.timestampMillis, System.currentTimeMillis()) - threadId = context.getThreadId(address) - } - - if (!context.isNumberBlocked(address)) { - ensureBackgroundThread { - context.insertNewSMS(address, subject, body, date, read, threadId, type, subscriptionId) - - val conversation = context.getConversations(threadId).firstOrNull() ?: return@ensureBackgroundThread - context.conversationsDB.insertOrUpdate(conversation) - context.updateUnreadCountBadge(context.conversationsDB.getUnreadConversations()) + ensureBackgroundThread { + messages.forEach { + address = it.originatingAddress ?: "" + subject = it.pseudoSubject + body += it.messageBody + date = Math.min(it.timestampMillis, System.currentTimeMillis()) + threadId = context.getThreadId(address) } - context.showReceivedMessageNotification(address, body, threadId.toInt(), null) - refreshMessages() + Handler(Looper.getMainLooper()).post { + if (!context.isNumberBlocked(address)) { + ensureBackgroundThread { + context.insertNewSMS(address, subject, body, date, read, threadId, type, subscriptionId) + + val conversation = context.getConversations(threadId).firstOrNull() ?: return@ensureBackgroundThread + context.conversationsDB.insertOrUpdate(conversation) + context.updateUnreadCountBadge(context.conversationsDB.getUnreadConversations()) + } + + context.showReceivedMessageNotification(address, body, threadId.toInt(), null) + refreshMessages() + } + } } } }