Using ApnUtils causes crash on newer Android versions (https://github.com/SimpleMobileTools/Simple-SMS-Messenger/pull/683#issuecomment-1637036718) This reverts this part of changes from https://github.com/SimpleMobileTools/Simple-SMS-Messenger/pull/687, since other changes have fixed the issue. This part is not as important (required to send reception ACK to MMSC, which is apparently not needed for all carriers)
54 lines
2.2 KiB
Kotlin
54 lines
2.2 KiB
Kotlin
package com.simplemobiletools.smsmessenger.receivers
|
|
|
|
import android.content.Context
|
|
import android.net.Uri
|
|
import android.os.Handler
|
|
import android.os.Looper
|
|
import com.bumptech.glide.Glide
|
|
import com.klinker.android.send_message.MmsReceivedReceiver
|
|
import com.simplemobiletools.commons.extensions.isNumberBlocked
|
|
import com.simplemobiletools.commons.extensions.normalizePhoneNumber
|
|
import com.simplemobiletools.commons.helpers.ensureBackgroundThread
|
|
import com.simplemobiletools.smsmessenger.R
|
|
import com.simplemobiletools.smsmessenger.extensions.*
|
|
import com.simplemobiletools.smsmessenger.helpers.refreshMessages
|
|
|
|
// more info at https://github.com/klinker41/android-smsmms
|
|
class MmsReceiver : MmsReceivedReceiver() {
|
|
|
|
override fun isAddressBlocked(context: Context, address: String): Boolean {
|
|
val normalizedAddress = address.normalizePhoneNumber()
|
|
return context.isNumberBlocked(normalizedAddress)
|
|
}
|
|
|
|
override fun onMessageReceived(context: Context, messageUri: Uri) {
|
|
val mms = context.getLatestMMS() ?: return
|
|
val address = mms.getSender()?.phoneNumbers?.first()?.normalizedNumber ?: ""
|
|
|
|
val size = context.resources.getDimension(R.dimen.notification_large_icon_size).toInt()
|
|
ensureBackgroundThread {
|
|
val glideBitmap = try {
|
|
Glide.with(context)
|
|
.asBitmap()
|
|
.load(mms.attachment!!.attachments.first().getUri())
|
|
.centerCrop()
|
|
.into(size, size)
|
|
.get()
|
|
} catch (e: Exception) {
|
|
null
|
|
}
|
|
|
|
Handler(Looper.getMainLooper()).post {
|
|
context.showReceivedMessageNotification(mms.id, address, mms.body, mms.threadId, glideBitmap)
|
|
val conversation = context.getConversations(mms.threadId).firstOrNull() ?: return@post
|
|
ensureBackgroundThread {
|
|
context.insertOrUpdateConversation(conversation)
|
|
context.updateUnreadCountBadge(context.conversationsDB.getUnreadConversations())
|
|
refreshMessages()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
override fun onError(context: Context, error: String) {}
|
|
}
|