diff --git a/app/build.gradle b/app/build.gradle index 26bccf7c..ef42ed28 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -56,7 +56,7 @@ android { } dependencies { - implementation 'com.simplemobiletools:commons:5.28.14' + implementation 'com.simplemobiletools:commons:5.28.18' implementation 'org.greenrobot:eventbus:3.2.0' implementation 'com.klinkerapps:android-smsmms:5.2.6' implementation 'com.github.tibbi:IndicatorFastScroll:08f512858a' 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 8fab8ba9..a28dd4ba 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Context.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Context.kt @@ -48,6 +48,7 @@ fun Context.getMessages(threadId: Int): ArrayList { val sortOrder = "${Sms._ID} DESC LIMIT 100" val blockStatus = HashMap() + val blockedNumbers = getBlockedNumbers() var messages = ArrayList() queryCursor(uri, projection, selection, selectionArgs, sortOrder, showErrors = true) { cursor -> val senderNumber = cursor.getStringValue(Sms.ADDRESS) ?: return@queryCursor @@ -55,7 +56,7 @@ fun Context.getMessages(threadId: Int): ArrayList { val isNumberBlocked = if (blockStatus.containsKey(senderNumber)) { blockStatus[senderNumber]!! } else { - val isBlocked = isNumberBlocked(senderNumber) + val isBlocked = isNumberBlocked(senderNumber, blockedNumbers) blockStatus[senderNumber] = isBlocked isBlocked } @@ -148,7 +149,7 @@ fun Context.getMMS(threadId: Int? = null, sortOrder: String? = null): ArrayList< messages.add(message) participants.forEach { - contactsMap.put(it.rawId, it) + contactsMap[it.rawId] = it } } @@ -189,6 +190,7 @@ fun Context.getConversations(): ArrayList { val conversations = ArrayList() val simpleContactHelper = SimpleContactsHelper(this) + val blockedNumbers = getBlockedNumbers() queryCursor(uri, projection, selection, selectionArgs, sortOrder, true) { cursor -> val id = cursor.getIntValue(Threads._ID) var snippet = cursor.getStringValue(Threads.SNIPPET) ?: "" @@ -204,7 +206,7 @@ fun Context.getConversations(): ArrayList { val rawIds = cursor.getStringValue(Threads.RECIPIENT_IDS) val recipientIds = rawIds.split(" ").filter { it.areDigitsOnly() }.map { it.toInt() }.toMutableList() val phoneNumbers = getThreadPhoneNumbers(recipientIds) - if (phoneNumbers.any { isNumberBlocked(it) }) { + if (phoneNumbers.any { isNumberBlocked(it, blockedNumbers) }) { return@queryCursor } @@ -378,13 +380,14 @@ fun Context.getSuggestedContacts(privateContacts: ArrayList): Arr val selection = "1 == 1) GROUP BY (${Sms.ADDRESS}" val selectionArgs = null val sortOrder = "${Sms.DATE} DESC LIMIT 20" + val blockedNumbers = getBlockedNumbers() queryCursor(uri, projection, selection, selectionArgs, sortOrder, showErrors = true) { cursor -> val senderNumber = cursor.getStringValue(Sms.ADDRESS) ?: return@queryCursor val namePhoto = getNameAndPhotoFromPhoneNumber(senderNumber) var senderName = namePhoto?.name ?: "" var photoUri = namePhoto?.photoUri ?: "" - if (namePhoto == null || isNumberBlocked(senderNumber)) { + if (namePhoto == null || isNumberBlocked(senderNumber, blockedNumbers)) { return@queryCursor } else if (namePhoto.name == senderNumber) { if (privateContacts.isNotEmpty()) { @@ -499,16 +502,6 @@ fun Context.getThreadId(addresses: Set): Long { } } -fun Context.isNumberBlocked(number: String): Boolean { - if (!isNougatPlus()) { - return false - } - - val blockedNumbers = getBlockedNumbers() - val numberToCompare = number.trimToComparableNumber() - return blockedNumbers.map { it.numberToCompare }.contains(numberToCompare) || blockedNumbers.map { it.number }.contains(numberToCompare) -} - @SuppressLint("NewApi") fun Context.showReceivedMessageNotification(address: String, body: String, threadID: Int, bitmap: Bitmap?, messageId: Int, isMMS: Boolean) { val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/MmsReceiver.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/MmsReceiver.kt index 865fb5a3..da7f70be 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/MmsReceiver.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/MmsReceiver.kt @@ -3,10 +3,10 @@ package com.simplemobiletools.smsmessenger.receivers import android.content.Context import android.net.Uri import com.bumptech.glide.Glide +import com.simplemobiletools.commons.extensions.isNumberBlocked import com.simplemobiletools.commons.helpers.ensureBackgroundThread import com.simplemobiletools.smsmessenger.R import com.simplemobiletools.smsmessenger.extensions.getLatestMMS -import com.simplemobiletools.smsmessenger.extensions.isNumberBlocked import com.simplemobiletools.smsmessenger.extensions.showReceivedMessageNotification // more info at https://github.com/klinker41/android-smsmms 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 17c6f62b..4e79e291 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/SmsReceiver.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/SmsReceiver.kt @@ -4,9 +4,9 @@ import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import android.provider.Telephony +import com.simplemobiletools.commons.extensions.isNumberBlocked import com.simplemobiletools.smsmessenger.extensions.getThreadId import com.simplemobiletools.smsmessenger.extensions.insertNewSMS -import com.simplemobiletools.smsmessenger.extensions.isNumberBlocked import com.simplemobiletools.smsmessenger.extensions.showReceivedMessageNotification import com.simplemobiletools.smsmessenger.helpers.refreshMessages