From bb12ca5e8760777fa4babb84ae992b49ee26e9c5 Mon Sep 17 00:00:00 2001 From: micheal Samuel Naeem Date: Fri, 3 Jul 2020 17:08:20 +0200 Subject: [PATCH] show unread message count badge on app icon --- app/build.gradle | 1 + .../smsmessenger/activities/MainActivity.kt | 2 ++ .../smsmessenger/extensions/Context.kt | 11 +++++++++++ 3 files changed, 14 insertions(+) diff --git a/app/build.gradle b/app/build.gradle index 5cbaaebf..8562d5be 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -61,6 +61,7 @@ dependencies { implementation 'org.greenrobot:eventbus:3.2.0' implementation 'com.klinkerapps:android-smsmms:5.2.6' implementation 'com.github.tibbi:IndicatorFastScroll:08f512858a' + implementation "me.leolin:ShortcutBadger:1.1.22@aar" kapt "androidx.room:room-compiler:2.2.5" implementation "androidx.room:room-runtime:2.2.5" diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/MainActivity.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/MainActivity.kt index 091eb54f..16d4a643 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/MainActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/MainActivity.kt @@ -21,6 +21,7 @@ import com.simplemobiletools.smsmessenger.adapters.ConversationsAdapter import com.simplemobiletools.smsmessenger.extensions.config import com.simplemobiletools.smsmessenger.extensions.conversationsDB import com.simplemobiletools.smsmessenger.extensions.getConversations +import com.simplemobiletools.smsmessenger.extensions.updateUnreadCountBadge import com.simplemobiletools.smsmessenger.helpers.THREAD_ID import com.simplemobiletools.smsmessenger.helpers.THREAD_TITLE import com.simplemobiletools.smsmessenger.models.Conversation @@ -165,6 +166,7 @@ class MainActivity : SimpleActivity() { private fun getCachedConversations() { ensureBackgroundThread { val conversations = conversationsDB.getAll().sortedByDescending { it.date }.toMutableList() as ArrayList + updateUnreadCountBadge(conversations) runOnUiThread { setupConversations(conversations) getNewConversations(conversations) 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 cc6d84eb..f080c36a 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Context.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Context.kt @@ -29,6 +29,7 @@ import com.simplemobiletools.smsmessenger.interfaces.ConversationsDao import com.simplemobiletools.smsmessenger.models.* import com.simplemobiletools.smsmessenger.receivers.DirectReplyReceiver import com.simplemobiletools.smsmessenger.receivers.MarkAsReadReceiver +import me.leolin.shortcutbadger.ShortcutBadger import java.util.* import kotlin.collections.ArrayList @@ -451,6 +452,16 @@ fun Context.getNameAndPhotoFromPhoneNumber(number: String): NamePhoto? { return NamePhoto(number, null) } +fun Context.updateUnreadCountBadge(conversations : ArrayList){ + var count = 0 + conversations.forEach { + if(!it.read) count++ + } + if(count == 0) ShortcutBadger.removeCount(this) + else ShortcutBadger.applyCount(this,count) +} + + fun Context.insertNewSMS(address: String, subject: String, body: String, date: Long, read: Int, threadId: Long, type: Int, subscriptionId: Int): Int { val uri = Sms.CONTENT_URI val contentValues = ContentValues().apply {