@@ -3,13 +3,19 @@ package com.simplemobiletools.smsmessenger.receivers
33import android.content.BroadcastReceiver
44import android.content.Context
55import android.content.Intent
6+ import android.graphics.Bitmap
67import android.os.Handler
78import android.os.Looper
89import android.provider.Telephony
910import com.simplemobiletools.commons.extensions.getMyContactsCursor
11+ import com.bumptech.glide.Glide
12+ import com.bumptech.glide.load.engine.DiskCacheStrategy
13+ import com.bumptech.glide.request.RequestOptions
1014import com.simplemobiletools.commons.extensions.isNumberBlocked
15+ import com.simplemobiletools.commons.helpers.SimpleContactsHelper
1116import com.simplemobiletools.commons.helpers.ensureBackgroundThread
1217import com.simplemobiletools.commons.models.SimpleContact
18+ import com.simplemobiletools.smsmessenger.R
1319import com.simplemobiletools.smsmessenger.extensions.*
1420import com.simplemobiletools.smsmessenger.helpers.refreshMessages
1521import com.simplemobiletools.smsmessenger.models.Message
@@ -37,6 +43,8 @@ class SmsReceiver : BroadcastReceiver() {
3743 threadId = context.getThreadId(address)
3844 }
3945
46+ val bitmap = getPhotoForNotification(address, context)
47+
4048 Handler (Looper .getMainLooper()).post {
4149 val privateCursor = context.getMyContactsCursor(false , true )?.loadInBackground()
4250 if (! context.isNumberBlocked(address)) {
@@ -65,9 +73,33 @@ class SmsReceiver : BroadcastReceiver() {
6573 refreshMessages()
6674 }
6775
68- context.showReceivedMessageNotification(address, body, threadId, null )
76+ context.showReceivedMessageNotification(address, body, threadId, bitmap )
6977 }
7078 }
7179 }
7280 }
81+
82+ private fun getPhotoForNotification (address : String , context : Context ): Bitmap ? {
83+ val photo = SimpleContactsHelper (context).getPhotoUriFromPhoneNumber(address)
84+ val size = context.resources.getDimension(R .dimen.notification_large_icon_size).toInt()
85+ if (photo.isEmpty()) {
86+ return null
87+ }
88+
89+ val options = RequestOptions ()
90+ .diskCacheStrategy(DiskCacheStrategy .RESOURCE )
91+ .centerCrop()
92+
93+ return try {
94+ Glide .with (context)
95+ .asBitmap()
96+ .load(photo)
97+ .apply (options)
98+ .apply (RequestOptions .circleCropTransform())
99+ .into(size, size)
100+ .get()
101+ } catch (e: Exception ) {
102+ null
103+ }
104+ }
73105}
0 commit comments