Implemented blocking logic on MMS received, for both unknown numbers and keyword filtering
This commit is contained in:
parent
8a1b75012b
commit
23080debfe
3 changed files with 63 additions and 32 deletions
|
|
@ -0,0 +1,17 @@
|
||||||
|
package org.fossify.messages.helpers
|
||||||
|
|
||||||
|
import android.content.Context
|
||||||
|
import org.fossify.messages.extensions.config
|
||||||
|
|
||||||
|
object ReceiverUtils {
|
||||||
|
|
||||||
|
fun isMessageFilteredOut(context: Context, body: String): Boolean {
|
||||||
|
for (blockedKeyword in context.config.blockedKeywords) {
|
||||||
|
if (body.contains(blockedKeyword, ignoreCase = true)) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -6,13 +6,14 @@ import android.os.Handler
|
||||||
import android.os.Looper
|
import android.os.Looper
|
||||||
import com.bumptech.glide.Glide
|
import com.bumptech.glide.Glide
|
||||||
import com.klinker.android.send_message.MmsReceivedReceiver
|
import com.klinker.android.send_message.MmsReceivedReceiver
|
||||||
import org.fossify.commons.extensions.isNumberBlocked
|
import org.fossify.commons.extensions.*
|
||||||
import org.fossify.commons.extensions.normalizePhoneNumber
|
import org.fossify.commons.helpers.SimpleContactsHelper
|
||||||
import org.fossify.commons.extensions.showErrorToast
|
|
||||||
import org.fossify.commons.helpers.ensureBackgroundThread
|
import org.fossify.commons.helpers.ensureBackgroundThread
|
||||||
import org.fossify.messages.R
|
import org.fossify.messages.R
|
||||||
import org.fossify.messages.extensions.*
|
import org.fossify.messages.extensions.*
|
||||||
|
import org.fossify.messages.helpers.ReceiverUtils.isMessageFilteredOut
|
||||||
import org.fossify.messages.helpers.refreshMessages
|
import org.fossify.messages.helpers.refreshMessages
|
||||||
|
import org.fossify.messages.models.Message
|
||||||
|
|
||||||
// more info at https://github.com/klinker41/android-smsmms
|
// more info at https://github.com/klinker41/android-smsmms
|
||||||
class MmsReceiver : MmsReceivedReceiver() {
|
class MmsReceiver : MmsReceivedReceiver() {
|
||||||
|
|
@ -27,7 +28,33 @@ class MmsReceiver : MmsReceivedReceiver() {
|
||||||
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) {
|
||||||
|
val simpleContactsHelper = SimpleContactsHelper(context)
|
||||||
|
simpleContactsHelper.exists(address, privateCursor) { exists ->
|
||||||
|
if (exists) {
|
||||||
|
handleMmsMessage(context, mms, size, address)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
handleMmsMessage(context, mms, size, address)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onError(context: Context, error: String) = context.showErrorToast(context.getString(R.string.couldnt_download_mms))
|
||||||
|
|
||||||
|
private fun handleMmsMessage(
|
||||||
|
context: Context,
|
||||||
|
mms: Message,
|
||||||
|
size: Int,
|
||||||
|
address: String
|
||||||
|
) {
|
||||||
|
if (isMessageFilteredOut(context, mms.body)) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
val glideBitmap = try {
|
val glideBitmap = try {
|
||||||
Glide.with(context)
|
Glide.with(context)
|
||||||
.asBitmap()
|
.asBitmap()
|
||||||
|
|
@ -49,7 +76,4 @@ class MmsReceiver : MmsReceivedReceiver() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
override fun onError(context: Context, error: String) = context.showErrorToast(context.getString(R.string.couldnt_download_mms))
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,7 @@ import org.fossify.commons.helpers.ensureBackgroundThread
|
||||||
import org.fossify.commons.models.PhoneNumber
|
import org.fossify.commons.models.PhoneNumber
|
||||||
import org.fossify.commons.models.SimpleContact
|
import org.fossify.commons.models.SimpleContact
|
||||||
import org.fossify.messages.extensions.*
|
import org.fossify.messages.extensions.*
|
||||||
|
import org.fossify.messages.helpers.ReceiverUtils.isMessageFilteredOut
|
||||||
import org.fossify.messages.helpers.refreshMessages
|
import org.fossify.messages.helpers.refreshMessages
|
||||||
import org.fossify.messages.models.Message
|
import org.fossify.messages.models.Message
|
||||||
|
|
||||||
|
|
@ -40,7 +41,6 @@ class SmsReceiver : BroadcastReceiver() {
|
||||||
date = System.currentTimeMillis()
|
date = System.currentTimeMillis()
|
||||||
threadId = context.getThreadId(address)
|
threadId = context.getThreadId(address)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (context.baseConfig.blockUnknownNumbers) {
|
if (context.baseConfig.blockUnknownNumbers) {
|
||||||
val simpleContactsHelper = SimpleContactsHelper(context)
|
val simpleContactsHelper = SimpleContactsHelper(context)
|
||||||
simpleContactsHelper.exists(address, privateCursor) { exists ->
|
simpleContactsHelper.exists(address, privateCursor) { exists ->
|
||||||
|
|
@ -122,14 +122,4 @@ class SmsReceiver : BroadcastReceiver() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun isMessageFilteredOut(context: Context, body: String): Boolean {
|
|
||||||
for (blockedKeyword in context.config.blockedKeywords) {
|
|
||||||
if (body.contains(blockedKeyword, ignoreCase = true)) {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue