fix: properly block MMS messages from unknown numbers (#625)

Refs: https://github.com/FossifyOrg/Messages/issues/610
This commit is contained in:
Naveen Singh 2025-12-10 23:27:23 +05:30 committed by GitHub
parent 0cafa22acf
commit 1a804c6473
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 15 additions and 13 deletions

View file

@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Fixed ### Fixed
- Fixed new conversation shortcut ([#416]) - Fixed new conversation shortcut ([#416])
- Fixed blocking MMS messages from unknown numbers ([#610])
## [1.6.0] - 2025-10-29 ## [1.6.0] - 2025-10-29
### Changed ### Changed
@ -207,6 +208,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
[#562]: https://github.com/FossifyOrg/Messages/issues/562 [#562]: https://github.com/FossifyOrg/Messages/issues/562
[#574]: https://github.com/FossifyOrg/Messages/issues/574 [#574]: https://github.com/FossifyOrg/Messages/issues/574
[#600]: https://github.com/FossifyOrg/Messages/issues/600 [#600]: https://github.com/FossifyOrg/Messages/issues/600
[#610]: https://github.com/FossifyOrg/Messages/issues/610
[Unreleased]: https://github.com/FossifyOrg/Messages/compare/1.6.0...HEAD [Unreleased]: https://github.com/FossifyOrg/Messages/compare/1.6.0...HEAD
[1.6.0]: https://github.com/FossifyOrg/Messages/compare/1.5.0...1.6.0 [1.6.0]: https://github.com/FossifyOrg/Messages/compare/1.5.0...1.6.0

View file

@ -29,7 +29,17 @@ class MmsReceiver : MmsReceivedReceiver() {
override fun isAddressBlocked(context: Context, address: String): Boolean { override fun isAddressBlocked(context: Context, address: String): Boolean {
val normalizedAddress = address.normalizePhoneNumber() val normalizedAddress = address.normalizePhoneNumber()
return context.isNumberBlocked(normalizedAddress) if (context.isNumberBlocked(normalizedAddress)) return true
if (context.baseConfig.blockUnknownNumbers) {
val privateCursor = context.getMyContactsCursor(
favoritesOnly = false,
withPhoneNumbersOnly = true
)
val isKnownContact = SimpleContactsHelper(context).existsSync(address, privateCursor)
return !isKnownContact
}
return false
} }
override fun isContentBlocked(context: Context, content: String): Boolean { override fun isContentBlocked(context: Context, content: String): Boolean {
@ -39,20 +49,9 @@ class MmsReceiver : MmsReceivedReceiver() {
override fun onMessageReceived(context: Context, messageUri: Uri) { override fun onMessageReceived(context: Context, messageUri: Uri) {
val mms = context.getLatestMMS() ?: return val mms = context.getLatestMMS() ?: return
val address = mms.getSender()?.phoneNumbers?.first()?.normalizedNumber ?: "" val address = mms.getSender()?.phoneNumbers?.first()?.normalizedNumber ?: ""
val size = context.resources.getDimension(R.dimen.notification_large_icon_size).toInt() val size = context.resources.getDimension(R.dimen.notification_large_icon_size).toInt()
val privateCursor = context.getMyContactsCursor(false, true)
ensureBackgroundThread { ensureBackgroundThread {
if (context.baseConfig.blockUnknownNumbers) { handleMmsMessage(context, mms, size, address)
val simpleContactsHelper = SimpleContactsHelper(context)
simpleContactsHelper.exists(address, privateCursor) { exists ->
if (exists) {
handleMmsMessage(context, mms, size, address)
}
}
} else {
handleMmsMessage(context, mms, size, address)
}
} }
} }

View file

@ -53,6 +53,7 @@ class SmsReceiver : BroadcastReceiver() {
} }
if (context.baseConfig.blockUnknownNumbers) { if (context.baseConfig.blockUnknownNumbers) {
val simpleContactsHelper = SimpleContactsHelper(context) val simpleContactsHelper = SimpleContactsHelper(context)
// Maybe switch to existsSync()? No?
simpleContactsHelper.exists(address, privateCursor) { exists -> simpleContactsHelper.exists(address, privateCursor) { exists ->
if (exists) { if (exists) {
handleMessage(context, address, subject, body, date, read, threadId, type, subscriptionId, status) handleMessage(context, address, subject, body, date, read, threadId, type, subscriptionId, status)