From 05b00c9c340eb170148ea81de72f33820a93ea06 Mon Sep 17 00:00:00 2001 From: spkprs Date: Wed, 24 Jun 2020 18:33:28 +0300 Subject: [PATCH 01/53] Update strings.xml --- app/src/main/res/values-el/strings.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index b3c2dff0..b9b74593 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -7,7 +7,7 @@ Συνημμένο Δεν βρέθηκαν αποθηκευμένες συνομιλίες Έναρξη συνομιλίας - Reply + Απάντηση Νέα συνομιλία @@ -17,8 +17,8 @@ Ελήφθη SMS Νέο μήνυμα - Σήμανση ως αναγνωσμένου - Mark as Unread + Σήμανση ως αναγνωσμένο + Σήμανση ως μη αναγνωσμένο Είστε βέβαιοι ότι θέλετε να διαγράψετε όλα τα μηνύματα αυτής της συνομιλίας; From 9f8241f0dc6e3584b65cf2f80249104a8664b1ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Marques?= Date: Wed, 24 Jun 2020 22:34:16 +0100 Subject: [PATCH 02/53] Update strings.xml --- app/src/main/res/values-pt/strings.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index 1e8cd40f..977a1839 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -1,13 +1,13 @@ Simple SMS Messenger SMS Messenger - Escreva uma mensagem… - Mensagem não enviada. + Escrever uma mensagem… + Mensagem não enviada Adicionar pessoa Anexo Não foram encontradas conversas Iniciar uma conversa - Reply + Responder Nova conversa @@ -18,7 +18,7 @@ SMS recebida Nova mensagem Marcar como lida - Mark as Unread + Marcar como não lida Tem a certeza de que deseja eliminar todas as mensagens desta conversa? From 506072958a1410f064e658b1a0faf1a6a601e496 Mon Sep 17 00:00:00 2001 From: Philipp Fischbeck Date: Mon, 29 Jun 2020 20:24:32 +0200 Subject: [PATCH 03/53] Improve German translation --- app/src/main/res/values-de/strings.xml | 28 +++++++++++++------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 02e10fe5..2659bceb 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -2,26 +2,26 @@ Schlichter SMS Messenger SMS Messenger schreibe eine Nachricht… - Nachricht wurde noch nicht gesendet - füge eine Person hinzu + Nachricht wurde nicht gesendet. + Person hinzufügen Anhang - keine gespeicherten Chats gefunden - einen neuen Chat beginnen - Reply + Keine gespeicherten Chats gefunden + Neuen Chat beginnen + Antworten - neuer Chat - Füge einen Kontakt oder eine Nummer hinzu… + Neuer Chat + Kontakt oder Nummer hinzufügen… Vorschläge Empfangene SMS - neue Nachricht - markiere als gelesen - Mark as Unread + Neue Nachricht + Als gelesen markieren + Als ungelesen markieren - Möchtest du wirklich alle Nachrichten dieses Chat löschen? + Möchtest du wirklich alle Nachrichten dieses Chats löschen? @@ -36,9 +36,9 @@ - Why does the app require access to the internet? - Sadly it is needed for sending MMS attachments. Not being able to send MMS would be a really huge disadvantage compared to other apps, so we decided to go this way. - However, as usually, there are no ads, tracking or analytics whatsoever, the internet is used only for sending MMS. + Warum benötigt diese App Internetzugriff? + Leider ist dies nötig, um MMS-Anhänge zu versenden. Es wäre ein großer Nachteil gegenüber anderen Apps, wenn keine MMS versendet werden könnten, also haben wir uns für diesen Weg entschieden. + Jedoch gibt es wie immer keine Werbung, Tracking oder Analytics, der Internetzugriff wird also nur für das Versenden von MMS verwendet. From 579e7ae356057fba56cd9ba8c308b0f4e9911d3a Mon Sep 17 00:00:00 2001 From: micheal Samuel Naeem Date: Wed, 1 Jul 2020 12:43:35 +0200 Subject: [PATCH 04/53] change the color of suggested contact name based on font color of application --- .../smsmessenger/activities/NewConversationActivity.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/NewConversationActivity.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/NewConversationActivity.kt index 4baea150..dad4590a 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/NewConversationActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/NewConversationActivity.kt @@ -159,6 +159,7 @@ class NewConversationActivity : SimpleActivity() { val contact = it layoutInflater.inflate(R.layout.item_suggested_contact, null).apply { suggested_contact_name.text = contact.name + suggested_contact_name.setTextColor(baseConfig.textColor) SimpleContactsHelper(this@NewConversationActivity).loadContactImage(contact.photoUri, suggested_contact_image, contact.name) suggestions_holder.addView(this) setOnClickListener { From bb12ca5e8760777fa4babb84ae992b49ee26e9c5 Mon Sep 17 00:00:00 2001 From: micheal Samuel Naeem Date: Fri, 3 Jul 2020 17:08:20 +0200 Subject: [PATCH 05/53] 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 { From 7b1b34dbbe8b01925fc1e4c25b30a3b04a88b66c Mon Sep 17 00:00:00 2001 From: micheal Samuel Naeem Date: Sat, 4 Jul 2020 17:11:12 +0200 Subject: [PATCH 06/53] add brackets and white spaces to follow code style --- .../smsmessenger/extensions/Context.kt | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) 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 f080c36a..e70cbb13 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Context.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Context.kt @@ -454,11 +454,18 @@ fun Context.getNameAndPhotoFromPhoneNumber(number: String): NamePhoto? { fun Context.updateUnreadCountBadge(conversations : ArrayList){ var count = 0 + conversations.forEach { - if(!it.read) count++ + if(!it.read) { + count++ + } + } + + if(count == 0) { + ShortcutBadger.removeCount(this) + } else { + ShortcutBadger.applyCount(this,count) } - if(count == 0) ShortcutBadger.removeCount(this) - else ShortcutBadger.applyCount(this,count) } From 41fb730511d9eb6c5f198803457781ebaf780d00 Mon Sep 17 00:00:00 2001 From: tibbi Date: Mon, 27 Jul 2020 21:53:21 +0200 Subject: [PATCH 07/53] properly handle contacts with multiple phone numbers --- app/build.gradle | 2 +- .../smsmessenger/activities/MainActivity.kt | 10 ++-- .../activities/NewConversationActivity.kt | 8 ++-- .../smsmessenger/activities/ThreadActivity.kt | 46 ++++++++++++++----- .../adapters/AutoCompleteTextViewAdapter.kt | 4 +- .../smsmessenger/adapters/ContactsAdapter.kt | 2 +- .../smsmessenger/extensions/Context.kt | 10 ++-- .../smsmessenger/receivers/MmsReceiver.kt | 2 +- build.gradle | 2 +- gradle/wrapper/gradle-wrapper.properties | 4 +- 10 files changed, 58 insertions(+), 32 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 5cbaaebf..a5f57d70 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -57,7 +57,7 @@ android { } dependencies { - implementation 'com.simplemobiletools:commons:5.29.7' + implementation 'com.simplemobiletools:commons:5.29.19' implementation 'org.greenrobot:eventbus:3.2.0' implementation 'com.klinkerapps:android-smsmms:5.2.6' implementation 'com.github.tibbi:IndicatorFastScroll:08f512858a' 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..c6c11537 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/MainActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/MainActivity.kt @@ -173,7 +173,7 @@ class MainActivity : SimpleActivity() { } private fun getNewConversations(cachedConversations: ArrayList) { - val privateCursor = getMyContactsContentProviderCursorLoader().loadInBackground() + val privateCursor = getMyContactsCursor().loadInBackground() ensureBackgroundThread { val conversations = getConversations() @@ -181,9 +181,11 @@ class MainActivity : SimpleActivity() { val privateContacts = MyContactsContentProvider.getSimpleContacts(this, privateCursor) if (privateContacts.isNotEmpty()) { conversations.filter { it.title == it.phoneNumber }.forEach { conversation -> - privateContacts.firstOrNull { it.phoneNumber == conversation.phoneNumber }?.apply { - conversation.title = name - conversation.photoUri = photoUri + privateContacts.forEach { contact -> + if (contact.doesContainPhoneNumber(conversation.phoneNumber)) { + conversation.title = contact.name + conversation.photoUri = contact.photoUri + } } } } diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/NewConversationActivity.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/NewConversationActivity.kt index 4baea150..014e81d1 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/NewConversationActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/NewConversationActivity.kt @@ -64,7 +64,7 @@ class NewConversationActivity : SimpleActivity() { val searchString = it val filteredContacts = ArrayList() allContacts.forEach { - if (it.phoneNumber.contains(searchString, true) || it.name.contains(searchString, true)) { + if (it.phoneNumbers.any { it.contains(searchString, true) } || it.name.contains(searchString, true)) { filteredContacts.add(it) } } @@ -134,7 +134,7 @@ class NewConversationActivity : SimpleActivity() { ContactsAdapter(this, contacts, contacts_list, null) { hideKeyboard() - launchThreadActivity((it as SimpleContact).phoneNumber, it.name) + launchThreadActivity((it as SimpleContact).phoneNumbers.first(), it.name) }.apply { contacts_list.adapter = this } @@ -143,7 +143,7 @@ class NewConversationActivity : SimpleActivity() { } private fun fillSuggestedContacts(callback: () -> Unit) { - val privateCursor = getMyContactsContentProviderCursorLoader().loadInBackground() + val privateCursor = getMyContactsCursor().loadInBackground() ensureBackgroundThread { privateContacts = MyContactsContentProvider.getSimpleContacts(this, privateCursor) val suggestions = getSuggestedContacts(privateContacts) @@ -162,7 +162,7 @@ class NewConversationActivity : SimpleActivity() { SimpleContactsHelper(this@NewConversationActivity).loadContactImage(contact.photoUri, suggested_contact_image, contact.name) suggestions_holder.addView(this) setOnClickListener { - launchThreadActivity(contact.phoneNumber, contact.name) + launchThreadActivity(contact.phoneNumbers.first(), contact.name) } } } diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt index 01179818..12a5985e 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt @@ -87,7 +87,7 @@ class ThreadActivity : SimpleActivity() { } private fun setupThread() { - val privateCursor = getMyContactsContentProviderCursorLoader().loadInBackground() + val privateCursor = getMyContactsCursor().loadInBackground() ensureBackgroundThread { messages = getMessages(threadId) participants = if (messages.isEmpty()) { @@ -100,9 +100,9 @@ class ThreadActivity : SimpleActivity() { privateContacts = MyContactsContentProvider.getSimpleContacts(this, privateCursor) if (privateContacts.isNotEmpty()) { val senderNumbersToReplace = HashMap() - participants.filter { it.name == it.phoneNumber }.forEach { participant -> - privateContacts.firstOrNull { it.phoneNumber == participant.phoneNumber }?.apply { - senderNumbersToReplace[participant.phoneNumber] = name + participants.filter { it.doesContainPhoneNumber(it.name) }.forEach { participant -> + privateContacts.firstOrNull { it.doesContainPhoneNumber(participant.phoneNumbers.first()) }?.apply { + senderNumbersToReplace[participant.phoneNumbers.first()] = name participant.name = name participant.photoUri = photoUri } @@ -124,7 +124,7 @@ class ThreadActivity : SimpleActivity() { return@ensureBackgroundThread } - val contact = SimpleContact(0, 0, name, "", number) + val contact = SimpleContact(0, 0, name, "", arrayListOf(number)) participants.add(contact) } @@ -241,7 +241,7 @@ class ThreadActivity : SimpleActivity() { confirm_inserted_number?.setOnClickListener { val number = add_contact_or_number.value - val contact = SimpleContact(number.hashCode(), number.hashCode(), number, "", number) + val contact = SimpleContact(number.hashCode(), number.hashCode(), number, "", arrayListOf(number)) addSelectedContact(contact) } } @@ -266,7 +266,13 @@ class ThreadActivity : SimpleActivity() { hideKeyboard() thread_add_contacts.beGone() - val numbers = participants.map { it.phoneNumber }.toSet() + val numbers = HashSet() + participants.forEach { + it.phoneNumbers.forEach { + numbers.add(it) + } + } + val newThreadId = getThreadId(numbers).toInt() if (threadId != newThreadId) { Intent(this, ThreadActivity::class.java).apply { @@ -305,7 +311,13 @@ class ThreadActivity : SimpleActivity() { availableSIMCards.add(SIMCard) } - val numbers = participants.map { it.phoneNumber }.toTypedArray() + val numbers = ArrayList() + participants.forEach { + it.phoneNumbers.forEach { + numbers.add(it) + } + } + currentSIMCardIndex = availableSIMs.indexOfFirstOrNull { it.subscriptionId == config.getUseSIMIdAtNumber(numbers.first()) } ?: 0 thread_select_sim_icon.applyColorFilter(config.textColor) @@ -327,7 +339,13 @@ class ThreadActivity : SimpleActivity() { } private fun blockNumber() { - val numbers = participants.map { it.phoneNumber } + val numbers = ArrayList() + participants.forEach { + it.phoneNumbers.forEach { + numbers.add(it) + } + } + val numbersString = TextUtils.join(", ", numbers) val question = String.format(resources.getString(R.string.block_confirmation), numbersString) @@ -518,7 +536,13 @@ class ThreadActivity : SimpleActivity() { return } - val numbers = participants.map { it.phoneNumber }.toTypedArray() + val numbers = ArrayList() + participants.forEach { + it.phoneNumbers.forEach { + numbers.add(it) + } + } + val settings = Settings() settings.useSystemSending = true @@ -531,7 +555,7 @@ class ThreadActivity : SimpleActivity() { } val transaction = Transaction(this, settings) - val message = com.klinker.android.send_message.Message(msg, numbers) + val message = com.klinker.android.send_message.Message(msg, numbers.toTypedArray()) if (attachmentUris.isNotEmpty()) { for (uri in attachmentUris) { diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/AutoCompleteTextViewAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/AutoCompleteTextViewAdapter.kt index 68c38b7f..445c8294 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/AutoCompleteTextViewAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/AutoCompleteTextViewAdapter.kt @@ -31,7 +31,7 @@ class AutoCompleteTextViewAdapter(val activity: SimpleActivity, val contacts: Ar } findViewById(R.id.item_contact_name).text = contact.name - findViewById(R.id.item_contact_number).text = contact.phoneNumber + findViewById(R.id.item_contact_number).text = contact.phoneNumbers.first() SimpleContactsHelper(context).loadContactImage(contact.photoUri, findViewById(R.id.item_contact_image), contact.name) } @@ -46,7 +46,7 @@ class AutoCompleteTextViewAdapter(val activity: SimpleActivity, val contacts: Ar resultList.clear() val searchString = constraint.toString().normalizeString() contacts.forEach { - if (it.phoneNumber.contains(searchString, true) || it.name.contains(searchString, true)) { + if (it.doesContainPhoneNumber(searchString) || it.name.contains(searchString, true)) { resultList.add(it) } } diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ContactsAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ContactsAdapter.kt index a7ed2248..b6d41b29 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ContactsAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ContactsAdapter.kt @@ -67,7 +67,7 @@ class ContactsAdapter(activity: SimpleActivity, var contacts: ArrayList(R.id.item_contact_number).apply { - text = contact.phoneNumber + text = contact.phoneNumbers.first() setTextColor(textColor) setTextSize(TypedValue.COMPLEX_UNIT_PX, fontSize) } 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..186e2503 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Context.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Context.kt @@ -83,7 +83,7 @@ fun Context.getMessages(threadId: Int): ArrayList { val read = cursor.getIntValue(Sms.READ) == 1 val thread = cursor.getIntValue(Sms.THREAD_ID) val subscriptionId = cursor.getIntValue(Sms.SUBSCRIPTION_ID) - val participant = SimpleContact(0, 0, senderName, photoUri, senderNumber) + val participant = SimpleContact(0, 0, senderName, photoUri, arrayListOf(senderNumber)) val isMMS = false val message = Message(id, body, type, arrayListOf(participant), date, read, thread, isMMS, null, senderName, photoUri, subscriptionId) messages.add(message) @@ -334,7 +334,7 @@ fun Context.getThreadParticipants(threadId: Int, contactsMap: HashMap): Arr return@queryCursor } else if (namePhoto.name == senderNumber) { if (privateContacts.isNotEmpty()) { - val privateContact = privateContacts.firstOrNull { it.phoneNumber == senderNumber } + val privateContact = privateContacts.firstOrNull { it.phoneNumbers.first() == senderNumber } if (privateContact != null) { senderName = privateContact.name photoUri = privateContact.photoUri @@ -415,8 +415,8 @@ fun Context.getSuggestedContacts(privateContacts: ArrayList): Arr } } - val contact = SimpleContact(0, 0, senderName, photoUri, senderNumber) - if (!contacts.map { it.phoneNumber.trimToComparableNumber() }.contains(senderNumber.trimToComparableNumber())) { + val contact = SimpleContact(0, 0, senderName, photoUri, arrayListOf(senderNumber)) + if (!contacts.map { it.phoneNumbers.first().trimToComparableNumber() }.contains(senderNumber.trimToComparableNumber())) { contacts.add(contact) } } diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/MmsReceiver.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/MmsReceiver.kt index b098bb99..1738138b 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/MmsReceiver.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/MmsReceiver.kt @@ -15,7 +15,7 @@ import com.simplemobiletools.smsmessenger.extensions.showReceivedMessageNotifica class MmsReceiver : com.klinker.android.send_message.MmsReceivedReceiver() { override fun onMessageReceived(context: Context, messageUri: Uri) { val mms = context.getLatestMMS() ?: return - val address = mms.participants.firstOrNull()?.phoneNumber ?: "" + val address = mms.participants.firstOrNull()?.phoneNumbers?.first() ?: "" if (context.isNumberBlocked(address)) { return } diff --git a/build.gradle b/build.gradle index ff843f13..49f50f83 100644 --- a/build.gradle +++ b/build.gradle @@ -8,7 +8,7 @@ buildscript { } dependencies { - classpath 'com.android.tools.build:gradle:3.6.3' + classpath 'com.android.tools.build:gradle:4.0.1' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" // NOTE: Do not place your application dependencies here; they belong diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 1a1dba62..e946aba2 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Fri Apr 03 09:58:13 CEST 2020 +#Mon Jul 27 21:27:47 CEST 2020 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip From 2e0d6a877d356baea1e44ed2dffd68326ef89245 Mon Sep 17 00:00:00 2001 From: tibbi Date: Mon, 27 Jul 2020 22:37:11 +0200 Subject: [PATCH 08/53] improving the unread messages counter badge --- app/build.gradle | 2 +- .../smsmessenger/extensions/Context.kt | 26 +++++++------------ .../interfaces/ConversationsDao.kt | 3 +++ .../receivers/MarkAsReadReceiver.kt | 2 ++ .../smsmessenger/receivers/MmsReceiver.kt | 6 ++--- .../smsmessenger/receivers/SmsReceiver.kt | 1 + 6 files changed, 18 insertions(+), 22 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 986817be..4f393c5b 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -61,7 +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" + implementation "me.leolin:ShortcutBadger:1.1.22" 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/extensions/Context.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Context.kt index 81c6add9..126b2e5f 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Context.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Context.kt @@ -452,23 +452,6 @@ 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 { @@ -540,6 +523,15 @@ fun Context.markThreadMessagesUnread(threadId: Int) { } } +fun Context.updateUnreadCountBadge(conversations: List) { + val unreadCount = conversations.count { !it.read } + if (unreadCount == 0) { + ShortcutBadger.removeCount(this) + } else { + ShortcutBadger.applyCount(this, unreadCount) + } +} + @SuppressLint("NewApi") fun Context.getThreadId(address: String): Long { return if (isMarshmallowPlus()) { diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/interfaces/ConversationsDao.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/interfaces/ConversationsDao.kt index 72d69763..d50507f7 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/interfaces/ConversationsDao.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/interfaces/ConversationsDao.kt @@ -14,6 +14,9 @@ interface ConversationsDao { @Query("SELECT * FROM conversations") fun getAll(): List + @Query("SELECT * FROM conversations WHERE read = 0") + fun getUnreadConversations(): List + @Query("UPDATE conversations SET read = 1 WHERE thread_id = :threadId") fun markRead(threadId: Long) diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/MarkAsReadReceiver.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/MarkAsReadReceiver.kt index be4c48e5..3ef30ed4 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/MarkAsReadReceiver.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/MarkAsReadReceiver.kt @@ -7,6 +7,7 @@ import com.simplemobiletools.commons.extensions.notificationManager import com.simplemobiletools.commons.helpers.ensureBackgroundThread import com.simplemobiletools.smsmessenger.extensions.conversationsDB import com.simplemobiletools.smsmessenger.extensions.markThreadMessagesRead +import com.simplemobiletools.smsmessenger.extensions.updateUnreadCountBadge import com.simplemobiletools.smsmessenger.helpers.MARK_AS_READ import com.simplemobiletools.smsmessenger.helpers.THREAD_ID @@ -19,6 +20,7 @@ class MarkAsReadReceiver : BroadcastReceiver() { ensureBackgroundThread { context.markThreadMessagesRead(threadId) context.conversationsDB.markRead(threadId.toLong()) + context.updateUnreadCountBadge(context.conversationsDB.getUnreadConversations()) } } } diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/MmsReceiver.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/MmsReceiver.kt index 1738138b..e132c5f3 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/MmsReceiver.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/MmsReceiver.kt @@ -6,10 +6,7 @@ import com.bumptech.glide.Glide import com.simplemobiletools.commons.extensions.isNumberBlocked import com.simplemobiletools.commons.helpers.ensureBackgroundThread import com.simplemobiletools.smsmessenger.R -import com.simplemobiletools.smsmessenger.extensions.conversationsDB -import com.simplemobiletools.smsmessenger.extensions.getConversations -import com.simplemobiletools.smsmessenger.extensions.getLatestMMS -import com.simplemobiletools.smsmessenger.extensions.showReceivedMessageNotification +import com.simplemobiletools.smsmessenger.extensions.* // more info at https://github.com/klinker41/android-smsmms class MmsReceiver : com.klinker.android.send_message.MmsReceivedReceiver() { @@ -36,6 +33,7 @@ class MmsReceiver : com.klinker.android.send_message.MmsReceivedReceiver() { context.showReceivedMessageNotification(address, mms.body, mms.thread, glideBitmap) val conversation = context.getConversations(mms.thread.toLong()).firstOrNull() ?: return@ensureBackgroundThread context.conversationsDB.insertOrUpdate(conversation) + context.updateUnreadCountBadge(context.conversationsDB.getUnreadConversations()) } } diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/SmsReceiver.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/SmsReceiver.kt index 28daec33..37380eca 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/SmsReceiver.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/SmsReceiver.kt @@ -37,6 +37,7 @@ class SmsReceiver : BroadcastReceiver() { ensureBackgroundThread { val conversation = context.getConversations(threadId).firstOrNull() ?: return@ensureBackgroundThread context.conversationsDB.insertOrUpdate(conversation) + context.updateUnreadCountBadge(context.conversationsDB.getUnreadConversations()) } } } From 6415b52b24906f0fa8c71e69d63ee4e90cead2a2 Mon Sep 17 00:00:00 2001 From: tibbi Date: Mon, 27 Jul 2020 22:51:44 +0200 Subject: [PATCH 09/53] catch exceptions thrown at updating conversations --- .../smsmessenger/activities/MainActivity.kt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) 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 a8914cdc..cda05a5f 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/MainActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/MainActivity.kt @@ -236,7 +236,10 @@ class MainActivity : SimpleActivity() { conversations_list.adapter = this } } else { - (currAdapter as ConversationsAdapter).updateConversations(conversations) + try { + (currAdapter as ConversationsAdapter).updateConversations(conversations) + } catch (ignored: Exception) { + } } } From e4637f861602395d98a79b49d6552739e9e2209a Mon Sep 17 00:00:00 2001 From: tibbi Date: Mon, 27 Jul 2020 22:58:59 +0200 Subject: [PATCH 10/53] update version to 5.4.0 --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 4f393c5b..6e982d60 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -17,8 +17,8 @@ android { applicationId "com.simplemobiletools.smsmessenger" minSdkVersion 22 targetSdkVersion 29 - versionCode 10 - versionName "5.3.0" + versionCode 11 + versionName "5.4.0" setProperty("archivesBaseName", "sms-messenger") } From 4e9eee6bca8d8f081b3d04227fa1e0082ecd83b9 Mon Sep 17 00:00:00 2001 From: tibbi Date: Mon, 27 Jul 2020 22:59:05 +0200 Subject: [PATCH 11/53] updating changelog --- CHANGELOG.md | 7 +++++++ fastlane/metadata/android/en-US/changelogs/11.txt | 3 +++ 2 files changed, 10 insertions(+) create mode 100644 fastlane/metadata/android/en-US/changelogs/11.txt diff --git a/CHANGELOG.md b/CHANGELOG.md index 279108c6..d614d8cd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,13 @@ Changelog ========== +Version 5.4.0 *(2020-07-27)* +---------------------------- + + * Show unread message badges on some devices that support it + * Added some improvements related to handling private contacts + * Other stability, UI and translation improvements + Version 5.3.0 *(2020-06-18)* ---------------------------- diff --git a/fastlane/metadata/android/en-US/changelogs/11.txt b/fastlane/metadata/android/en-US/changelogs/11.txt new file mode 100644 index 00000000..10c574f6 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/11.txt @@ -0,0 +1,3 @@ + * Show unread message badges on some devices that support it + * Added some improvements related to handling private contacts + * Other stability, UI and translation improvements From 7097af70a1e3d9718b6d1aa89d73bab25e197010 Mon Sep 17 00:00:00 2001 From: Luis Alfredo Figueroa Bracamontes Date: Wed, 29 Jul 2020 15:06:44 -0500 Subject: [PATCH 12/53] Inverting notification shortcuts --- .../com/simplemobiletools/smsmessenger/extensions/Context.kt | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) 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 126b2e5f..2b79a526 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Context.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Context.kt @@ -627,12 +627,11 @@ fun Context.showReceivedMessageNotification(address: String, body: String, threa .setCategory(Notification.CATEGORY_MESSAGE) .setAutoCancel(true) .setSound(soundUri, AudioManager.STREAM_NOTIFICATION) - .addAction(R.drawable.ic_check_vector, getString(R.string.mark_as_read), markAsReadPendingIntent) - .setChannelId(NOTIFICATION_CHANNEL) - if (replyAction != null) { builder.addAction(replyAction) } + builder.addAction(R.drawable.ic_check_vector, getString(R.string.mark_as_read), markAsReadPendingIntent) + .setChannelId(NOTIFICATION_CHANNEL) notificationManager.notify(threadID, builder.build()) } From bd2ab235561dec85dadf666fb120b6aed96e3f42 Mon Sep 17 00:00:00 2001 From: tibbi Date: Fri, 7 Aug 2020 21:56:19 +0200 Subject: [PATCH 13/53] updating commons to 5.29.20 --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 6e982d60..15542b01 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -57,7 +57,7 @@ android { } dependencies { - implementation 'com.simplemobiletools:commons:5.29.19' + implementation 'com.simplemobiletools:commons:5.29.20' implementation 'org.greenrobot:eventbus:3.2.0' implementation 'com.klinkerapps:android-smsmms:5.2.6' implementation 'com.github.tibbi:IndicatorFastScroll:08f512858a' From 38ae247f4d1dbacd2f8862ef648f4c6cfe7feeec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Freddy=20Mor=C3=A1n=20Jr?= Date: Sun, 9 Aug 2020 08:22:12 -0600 Subject: [PATCH 14/53] Spanish translation update --- app/src/main/res/values-es/strings.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 627cd749..250387ff 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -7,7 +7,7 @@ Archivo adjunto No se han encontrado conversaciones Inicia una conversación - Reply + Responder Nueva conversación @@ -18,7 +18,7 @@ Mensaje recibico Nuevo mensaje Marcar como leído - Mark as Unread + Marcar como no leído ¿Estás seguro que quieres eliminar todos los mensajes en esta conversación? @@ -37,7 +37,7 @@ ¿Por qué la aplicación requiere acceso a internet? - Tristemente es necesitado apra enviar archivos adjuntos MMS. El no poder enviar MMS sería una desventaja realmente enorme comparada con otras aplicaciones, así que decidimos tomar este camino. + Tristemente es necesitado para enviar archivos adjuntos MMS. El no poder enviar MMS sería una desventaja realmente enorme comparada con otras aplicaciones, así que decidimos tomar este camino. Sin embargo, como siempre, no hay anuncios, rastreo o análisis, por lo que el internet solo es usado para enviar MMS. From fc470d94086cc3b65e2a88a4c230a7d9e2fdb7fa Mon Sep 17 00:00:00 2001 From: tibbi Date: Thu, 20 Aug 2020 23:50:22 +0200 Subject: [PATCH 15/53] updating commons, target sdk to 30 --- app/build.gradle | 7 +++---- .../smsmessenger/activities/ThreadActivity.kt | 4 ++-- build.gradle | 2 +- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 15542b01..850ab86a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,13 +10,12 @@ if (keystorePropertiesFile.exists()) { } android { - compileSdkVersion 29 - buildToolsVersion "29.0.3" + compileSdkVersion 30 defaultConfig { applicationId "com.simplemobiletools.smsmessenger" minSdkVersion 22 - targetSdkVersion 29 + targetSdkVersion 30 versionCode 11 versionName "5.4.0" setProperty("archivesBaseName", "sms-messenger") @@ -57,7 +56,7 @@ android { } dependencies { - implementation 'com.simplemobiletools:commons:5.29.20' + implementation 'com.simplemobiletools:commons:5.30.1' implementation 'org.greenrobot:eventbus:3.2.0' implementation 'com.klinkerapps:android-smsmms:5.2.6' implementation 'com.github.tibbi:IndicatorFastScroll:08f512858a' diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt index 12a5985e..70ac2085 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt @@ -140,8 +140,8 @@ class ThreadActivity : SimpleActivity() { } else if (it.mimetype.startsWith("video/")) { val metaRetriever = MediaMetadataRetriever() metaRetriever.setDataSource(this, it.uri) - it.width = metaRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_WIDTH).toInt() - it.height = metaRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_HEIGHT).toInt() + it.width = metaRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_WIDTH)!!.toInt() + it.height = metaRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_HEIGHT)!!.toInt() } if (it.width < 0) { diff --git a/build.gradle b/build.gradle index 49f50f83..d6ecde63 100644 --- a/build.gradle +++ b/build.gradle @@ -1,7 +1,7 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { - ext.kotlin_version = '1.3.72' + ext.kotlin_version = '1.4.0' repositories { google() jcenter() From f1dfe8c9cc3579d4c6a0ec1951126321aea4d5e4 Mon Sep 17 00:00:00 2001 From: tibbi Date: Sun, 23 Aug 2020 20:54:15 +0200 Subject: [PATCH 16/53] properly display incoming message senders name at private contacts --- .../smsmessenger/extensions/Context.kt | 21 ++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) 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 2b79a526..7c8a734b 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Context.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Context.kt @@ -13,6 +13,8 @@ import android.media.AudioAttributes import android.media.AudioManager import android.media.RingtoneManager import android.net.Uri +import android.os.Handler +import android.os.Looper import android.provider.ContactsContract.PhoneLookup import android.provider.Telephony.* import android.text.TextUtils @@ -558,8 +560,23 @@ fun Context.getThreadId(addresses: Set): Long { } } -@SuppressLint("NewApi") fun Context.showReceivedMessageNotification(address: String, body: String, threadID: Int, bitmap: Bitmap?) { + val privateCursor = getMyContactsCursor().loadInBackground() + ensureBackgroundThread { + var sender = getNameAndPhotoFromPhoneNumber(address)?.name ?: "" + if (address == sender) { + val privateContacts = MyContactsContentProvider.getSimpleContacts(this, privateCursor) + sender = privateContacts.firstOrNull { it.doesContainPhoneNumber(address) }?.name ?: address + } + + Handler(Looper.getMainLooper()).post { + showMessageNotification(address, body, threadID, bitmap, sender) + } + } +} + +@SuppressLint("NewApi") +fun Context.showMessageNotification(address: String, body: String, threadID: Int, bitmap: Bitmap?, sender: String) { val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager val soundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION) if (isOreoPlus()) { @@ -586,8 +603,6 @@ fun Context.showReceivedMessageNotification(address: String, body: String, threa val pendingIntent = PendingIntent.getActivity(this, threadID, intent, PendingIntent.FLAG_UPDATE_CURRENT) val summaryText = getString(R.string.new_message) - val sender = getNameAndPhotoFromPhoneNumber(address)?.name ?: "" - val markAsReadIntent = Intent(this, MarkAsReadReceiver::class.java).apply { action = MARK_AS_READ putExtra(THREAD_ID, threadID) From e66a24c8f875ab84039926d01b37051b70b2012e Mon Sep 17 00:00:00 2001 From: tibbi Date: Sun, 23 Aug 2020 21:30:27 +0200 Subject: [PATCH 17/53] rewriting the loop checking the messages --- .../smsmessenger/activities/ThreadActivity.kt | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt index 70ac2085..37a64dbd 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt @@ -439,22 +439,23 @@ class ThreadActivity : SimpleActivity() { var prevDateTime = 0 var hadUnreadItems = false - messages.forEach { + for (i in 0 until messages.size) { + val message = messages[i] // do not show the date/time above every message, only if the difference between the 2 messages is at least MIN_DATE_TIME_DIFF_SECS - if (it.date - prevDateTime > MIN_DATE_TIME_DIFF_SECS) { - val simCardID = subscriptionIdToSimId[it.subscriptionId] ?: "?" - items.add(ThreadDateTime(it.date, simCardID)) - prevDateTime = it.date + if (message.date - prevDateTime > MIN_DATE_TIME_DIFF_SECS) { + val simCardID = subscriptionIdToSimId[message.subscriptionId] ?: "?" + items.add(ThreadDateTime(message.date, simCardID)) + prevDateTime = message.date } - items.add(it) + items.add(message) - if (it.type == Telephony.Sms.MESSAGE_TYPE_FAILED) { - items.add(ThreadError(it.id)) + if (message.type == Telephony.Sms.MESSAGE_TYPE_FAILED) { + items.add(ThreadError(message.id)) } - if (!it.read) { + if (!message.read) { hadUnreadItems = true - markMessageRead(it.id, it.isMMS) + markMessageRead(message.id, message.isMMS) conversationsDB.markRead(threadId.toLong()) } } From 349ff11957b44e3ae24121e0e9e1abffbbd0c703 Mon Sep 17 00:00:00 2001 From: tibbi Date: Sun, 23 Aug 2020 21:43:50 +0200 Subject: [PATCH 18/53] fix #35, show a tick at successfully sent last messages --- .../smsmessenger/activities/ThreadActivity.kt | 7 ++++++- .../smsmessenger/adapters/ThreadAdapter.kt | 20 +++++++++++-------- .../smsmessenger/helpers/Constants.kt | 1 + .../smsmessenger/models/ThreadSuccess.kt | 4 ++++ app/src/main/res/layout/item_thread_error.xml | 2 +- .../main/res/layout/item_thread_success.xml | 14 +++++++++++++ 6 files changed, 38 insertions(+), 10 deletions(-) create mode 100644 app/src/main/kotlin/com/simplemobiletools/smsmessenger/models/ThreadSuccess.kt create mode 100644 app/src/main/res/layout/item_thread_success.xml diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt index 37a64dbd..a5bbc16c 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt @@ -439,7 +439,8 @@ class ThreadActivity : SimpleActivity() { var prevDateTime = 0 var hadUnreadItems = false - for (i in 0 until messages.size) { + val cnt = messages.size + for (i in 0 until cnt) { val message = messages[i] // do not show the date/time above every message, only if the difference between the 2 messages is at least MIN_DATE_TIME_DIFF_SECS if (message.date - prevDateTime > MIN_DATE_TIME_DIFF_SECS) { @@ -458,6 +459,10 @@ class ThreadActivity : SimpleActivity() { markMessageRead(message.id, message.isMMS) conversationsDB.markRead(threadId.toLong()) } + + if (i == cnt - 1 && message.type == Telephony.Sms.MESSAGE_TYPE_SENT) { + items.add(ThreadSuccess(message.id)) + } } if (hadUnreadItems) { diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ThreadAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ThreadAdapter.kt index aa4cec77..73086af1 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ThreadAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ThreadAdapter.kt @@ -31,15 +31,13 @@ import com.simplemobiletools.smsmessenger.R import com.simplemobiletools.smsmessenger.activities.SimpleActivity import com.simplemobiletools.smsmessenger.extensions.deleteMessage import com.simplemobiletools.smsmessenger.helpers.* -import com.simplemobiletools.smsmessenger.models.Message -import com.simplemobiletools.smsmessenger.models.ThreadDateTime -import com.simplemobiletools.smsmessenger.models.ThreadError -import com.simplemobiletools.smsmessenger.models.ThreadItem +import com.simplemobiletools.smsmessenger.models.* import kotlinx.android.synthetic.main.item_attachment_image.view.* import kotlinx.android.synthetic.main.item_received_message.view.* import kotlinx.android.synthetic.main.item_received_unknown_attachment.view.* import kotlinx.android.synthetic.main.item_sent_unknown_attachment.view.* import kotlinx.android.synthetic.main.item_thread_date_time.view.* +import kotlinx.android.synthetic.main.item_thread_success.view.* class ThreadAdapter(activity: SimpleActivity, var messages: ArrayList, recyclerView: MyRecyclerView, fastScroller: FastScroller, itemClick: (Any) -> Unit) : MyRecyclerViewAdapter(activity, recyclerView, fastScroller, itemClick) { @@ -93,6 +91,7 @@ class ThreadAdapter(activity: SimpleActivity, var messages: ArrayList R.layout.item_thread_date_time THREAD_RECEIVED_MESSAGE -> R.layout.item_received_message THREAD_SENT_MESSAGE_ERROR -> R.layout.item_thread_error + THREAD_SENT_MESSAGE_SUCCESS -> R.layout.item_thread_success else -> R.layout.item_sent_message } return createViewHolder(layout, parent) @@ -101,10 +100,10 @@ class ThreadAdapter(activity: SimpleActivity, var messages: ArrayList - if (item is ThreadDateTime) { - setupDateTime(itemView, item) - } else if (item !is ThreadError) { - setupView(itemView, item as Message) + when (item) { + is ThreadDateTime -> setupDateTime(itemView, item) + is ThreadSuccess -> setupThreadSuccess(itemView) + !is ThreadError -> setupView(itemView, item as Message) } } bindViewHolder(holder) @@ -118,6 +117,7 @@ class ThreadAdapter(activity: SimpleActivity, var messages: ArrayList THREAD_DATE_TIME (messages[position] as? Message)?.isReceivedMessage() == true -> THREAD_RECEIVED_MESSAGE item is ThreadError -> THREAD_SENT_MESSAGE_ERROR + item is ThreadSuccess -> THREAD_SENT_MESSAGE_SUCCESS else -> THREAD_SENT_MESSAGE } } @@ -309,4 +309,8 @@ class ThreadAdapter(activity: SimpleActivity, var messages: ArrayList + + + + + From d2ac0fa938cf636bb5096723c5ccccc7d15a9722 Mon Sep 17 00:00:00 2001 From: tibbi Date: Sun, 23 Aug 2020 21:52:08 +0200 Subject: [PATCH 19/53] update version to 5.4.1 --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 850ab86a..f84e5e57 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -16,8 +16,8 @@ android { applicationId "com.simplemobiletools.smsmessenger" minSdkVersion 22 targetSdkVersion 30 - versionCode 11 - versionName "5.4.0" + versionCode 12 + versionName "5.4.1" setProperty("archivesBaseName", "sms-messenger") } From 67d6e7efe008b19acb72102ebbe30c02c810267b Mon Sep 17 00:00:00 2001 From: tibbi Date: Sun, 23 Aug 2020 21:52:16 +0200 Subject: [PATCH 20/53] updating changelog --- CHANGELOG.md | 6 ++++++ fastlane/metadata/android/en-US/changelogs/12.txt | 2 ++ 2 files changed, 8 insertions(+) create mode 100644 fastlane/metadata/android/en-US/changelogs/12.txt diff --git a/CHANGELOG.md b/CHANGELOG.md index d614d8cd..0d4fef4d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,12 @@ Changelog ========== +Version 5.4.1 *(2020-08-23)* +---------------------------- + + * Show a tick at successfully sent messages + * Properly show the sender name at incoming messages, if sent by a private contact + Version 5.4.0 *(2020-07-27)* ---------------------------- diff --git a/fastlane/metadata/android/en-US/changelogs/12.txt b/fastlane/metadata/android/en-US/changelogs/12.txt new file mode 100644 index 00000000..5a138404 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/12.txt @@ -0,0 +1,2 @@ + * Show a tick at successfully sent messages + * Properly show the sender name at incoming messages, if sent by a private contact From e266daaff91e1156fc7b52af4b492cd335498c1b Mon Sep 17 00:00:00 2001 From: vachan-maker <65799568+vachan-maker@users.noreply.github.com> Date: Sun, 13 Sep 2020 15:02:26 +0000 Subject: [PATCH 21/53] Added Malayalam Language(India) ml-in --- app/src/main/res/values-ml/strings.xml | 73 ++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 app/src/main/res/values-ml/strings.xml diff --git a/app/src/main/res/values-ml/strings.xml b/app/src/main/res/values-ml/strings.xml new file mode 100644 index 00000000..62789453 --- /dev/null +++ b/app/src/main/res/values-ml/strings.xml @@ -0,0 +1,73 @@ + + Simple SMS Messenger + SMS മെസഞ്ചർ + മെസ്സേജ് ടൈപ്പ് ചെയ്യുക + മെസ്സേജ് അയച്ചിട്ടില്ല. + വ്യക്തിയെ ചേർക്കുക + അറ്റാച്ചുമെന്റ് + സ്റ്റോർ ചെയ്ത സംഭാഷണങ്ങളൊന്നും കണ്ടെത്തിയില്ല + ഒരു സംഭാഷണം ആരംഭിക്കുക + ഒരു സംഭാഷണം ആരംഭിക്കുക + + + പുതിയ സംഭാഷണം + കോൺടാക്റ്റ് അല്ലെങ്കിൽ നമ്പർ ചേർക്കുക… + നിർദ്ദേശങ്ങൾ + + + SMS ലഭിച്ചു + പുതിയ മെസ്സേജ് + വായിച്ചതായി അടയാളപ്പെടുത്തുക + വായിച്ചിട്ടില്ലെന്ന് അടയാളപ്പെടുത്തുക + + + ഈ സംഭാഷണത്തിന്റെ എല്ലാ സന്ദേശങ്ങൾ ഇല്ലാതാക്കാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നുണ്ടോ? + + + + %d conversation + %d conversations + + + + + %d message + %d messages + + + + അപ്ലിക്കേഷന് ഇന്റർനെറ്റിലേക്ക് അക്സസ്സ് ആവശ്യമായി വരുന്നത് എന്തുകൊണ്ട്? + നിർഭാഗ്യവശാൽ, MMS അറ്റാച്ചുമെന്റുകൾ അയക്കുന്നതിനു ഇത് ആവശ്യമാണ്. മറ്റ് ആപ്ലിക്കേഷനുകളുമായി താരതമ്യപ്പെടുത്തുമ്പോൾ MMS അയയ്ക്കാൻ കഴിയുന്നില്ല എന്നത് ഒരു വലിയ പോരായ്മയാണ്, അതിനാൽ ഞങ്ങൾ ഈ റൂട്ടിൽ പോകാൻ തീരുമാനിച്ചു. + എന്നിരുന്നാലും, സാധാരണപോലെ, പരസ്യങ്ങളോ ട്രാക്കിംഗ് അല്ലെങ്കിൽ അനലിറ്റിക്സുകളോ ഇല്ല. ഇന്റർനെറ്റ് MMS അയയ്ക്കുന്നതിന് മാത്രമാണ് ഉപയോഗിക്കുന്നത്. + + + + Simple SMS Messenger - മെസ്സേജുകൾ എളുപ്പത്തിൽ കൈകാര്യം ചെയ്യുക + + പരസ്യങ്ങളില്ലാതെ SMS, MMS സന്ദേശങ്ങൾ കൈകാര്യം ചെയ്യുന്നതിനുള്ള എളുപ്പവും വേഗത്തിലുള്ളതുമായ മാർഗ്ഗം. + + A great way to stay in touch with your relatives, by sending both SMS and MMS messages. The app properly handles group messaging too, just like blocking numbers from Android 7+. + + It offers many date formats to choose from, to make you feel comfortable at using it. You can toggle between 12 and 24 hours time format too. + + It has a really tiny app size compared to the competition, making it really fast to download. + + It comes with material design and dark theme by default, provides great user experience for easy usage. The lack of internet access gives you more privacy, security and stability than other apps. + + Contains no ads or unnecessary permissions. It is fully opensource, provides customizable colors. + + Check out the full suite of Simple Tools here: + https://www.simplemobiletools.com + + Facebook: + https://www.facebook.com/simplemobiletools + + Reddit: + https://www.reddit.com/r/SimpleMobileTools + + + + From 784956ead1c3294855db124e42142b21a43151bf Mon Sep 17 00:00:00 2001 From: vachan-maker <65799568+vachan-maker@users.noreply.github.com> Date: Mon, 14 Sep 2020 11:04:37 +0000 Subject: [PATCH 22/53] Updalte strings.xml (values-ml) --- app/src/main/res/values-ml/strings.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/src/main/res/values-ml/strings.xml b/app/src/main/res/values-ml/strings.xml index 62789453..a0c2d877 100644 --- a/app/src/main/res/values-ml/strings.xml +++ b/app/src/main/res/values-ml/strings.xml @@ -36,15 +36,15 @@ - അപ്ലിക്കേഷന് ഇന്റർനെറ്റിലേക്ക് അക്സസ്സ് ആവശ്യമായി വരുന്നത് എന്തുകൊണ്ട്? + അപ്ലിക്കേഷന് ഇന്റർനെറ്റിലേക്ക് ആവശ്യമായി വരുന്നത് എന്തുകൊണ്ട്? നിർഭാഗ്യവശാൽ, MMS അറ്റാച്ചുമെന്റുകൾ അയക്കുന്നതിനു ഇത് ആവശ്യമാണ്. മറ്റ് ആപ്ലിക്കേഷനുകളുമായി താരതമ്യപ്പെടുത്തുമ്പോൾ MMS അയയ്ക്കാൻ കഴിയുന്നില്ല എന്നത് ഒരു വലിയ പോരായ്മയാണ്, അതിനാൽ ഞങ്ങൾ ഈ റൂട്ടിൽ പോകാൻ തീരുമാനിച്ചു. എന്നിരുന്നാലും, സാധാരണപോലെ, പരസ്യങ്ങളോ ട്രാക്കിംഗ് അല്ലെങ്കിൽ അനലിറ്റിക്സുകളോ ഇല്ല. ഇന്റർനെറ്റ് MMS അയയ്ക്കുന്നതിന് മാത്രമാണ് ഉപയോഗിക്കുന്നത്. - Simple SMS Messenger - മെസ്സേജുകൾ എളുപ്പത്തിൽ കൈകാര്യം ചെയ്യുക + Simple SMS Messenger - മെസ്സേജുകൾ കൈകാര്യം ചെയ്യുക - പരസ്യങ്ങളില്ലാതെ SMS, MMS സന്ദേശങ്ങൾ കൈകാര്യം ചെയ്യുന്നതിനുള്ള എളുപ്പവും വേഗത്തിലുള്ളതുമായ മാർഗ്ഗം. + SMS, MMS സന്ദേശങ്ങൾ കൈകാര്യം ചെയ്യുന്നതിനുള്ള ഏറ്റവും എളുപ്പ മാർഗം. A great way to stay in touch with your relatives, by sending both SMS and MMS messages. The app properly handles group messaging too, just like blocking numbers from Android 7+. From bca2c7edc03f526bc3f6f9daa7ead947cbd3cdc2 Mon Sep 17 00:00:00 2001 From: tibbi Date: Tue, 22 Sep 2020 14:15:25 +0200 Subject: [PATCH 23/53] updating some libraries --- app/build.gradle | 2 +- build.gradle | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index f84e5e57..88a5558c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -56,7 +56,7 @@ android { } dependencies { - implementation 'com.simplemobiletools:commons:5.30.1' + implementation 'com.simplemobiletools:commons:5.30.12' implementation 'org.greenrobot:eventbus:3.2.0' implementation 'com.klinkerapps:android-smsmms:5.2.6' implementation 'com.github.tibbi:IndicatorFastScroll:08f512858a' diff --git a/build.gradle b/build.gradle index d6ecde63..a0e7049e 100644 --- a/build.gradle +++ b/build.gradle @@ -1,7 +1,7 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { - ext.kotlin_version = '1.4.0' + ext.kotlin_version = '1.4.10' repositories { google() jcenter() From e3f7d809872d27d419cb2f08dcf4803ba62ba81b Mon Sep 17 00:00:00 2001 From: tibbi Date: Tue, 22 Sep 2020 14:16:05 +0200 Subject: [PATCH 24/53] fix a crash at showing received MMS messages --- .../smsmessenger/receivers/MmsReceiver.kt | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/MmsReceiver.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/MmsReceiver.kt index e132c5f3..920eb34f 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/MmsReceiver.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/MmsReceiver.kt @@ -2,6 +2,8 @@ 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.simplemobiletools.commons.extensions.isNumberBlocked import com.simplemobiletools.commons.helpers.ensureBackgroundThread @@ -30,10 +32,12 @@ class MmsReceiver : com.klinker.android.send_message.MmsReceivedReceiver() { null } - context.showReceivedMessageNotification(address, mms.body, mms.thread, glideBitmap) - val conversation = context.getConversations(mms.thread.toLong()).firstOrNull() ?: return@ensureBackgroundThread - context.conversationsDB.insertOrUpdate(conversation) - context.updateUnreadCountBadge(context.conversationsDB.getUnreadConversations()) + Handler(Looper.getMainLooper()).post { + context.showReceivedMessageNotification(address, mms.body, mms.thread, glideBitmap) + val conversation = context.getConversations(mms.thread.toLong()).firstOrNull() ?: return@post + context.conversationsDB.insertOrUpdate(conversation) + context.updateUnreadCountBadge(context.conversationsDB.getUnreadConversations()) + } } } From 766f1ef78c286f99285d80db294044d7a1041f73 Mon Sep 17 00:00:00 2001 From: tibbi Date: Tue, 22 Sep 2020 14:22:03 +0200 Subject: [PATCH 25/53] fix #76, make sure a notification is shown if app is paused --- .../smsmessenger/activities/ThreadActivity.kt | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt index a5bbc16c..0831549f 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt @@ -51,6 +51,7 @@ class ThreadActivity : SimpleActivity() { private var threadId = 0 private var currentSIMCardIndex = 0 + private var isActivityVisible = false private var threadItems = ArrayList() private var bus: EventBus? = null private var participants = ArrayList() @@ -86,6 +87,16 @@ class ThreadActivity : SimpleActivity() { } } + override fun onResume() { + super.onResume() + isActivityVisible = true + } + + override fun onPause() { + super.onPause() + isActivityVisible = false + } + private fun setupThread() { val privateCursor = getMyContactsCursor().loadInBackground() ensureBackgroundThread { @@ -643,7 +654,10 @@ class ThreadActivity : SimpleActivity() { @Subscribe(threadMode = ThreadMode.ASYNC) fun refreshMessages(event: Events.RefreshMessages) { - notificationManager.cancel(threadId) + if (isActivityVisible) { + notificationManager.cancel(threadId) + } + messages = getMessages(threadId) setupAdapter() } From b5c6b04613ce9670b9a950df367eca12f06b61ca Mon Sep 17 00:00:00 2001 From: tibbi Date: Tue, 22 Sep 2020 14:45:43 +0200 Subject: [PATCH 26/53] update version to 5.4.2 --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 88a5558c..45de363e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -16,8 +16,8 @@ android { applicationId "com.simplemobiletools.smsmessenger" minSdkVersion 22 targetSdkVersion 30 - versionCode 12 - versionName "5.4.1" + versionCode 13 + versionName "5.4.2" setProperty("archivesBaseName", "sms-messenger") } From bbe98a9bf0d6020f93077d3d63b4b7e9d1c5aebc Mon Sep 17 00:00:00 2001 From: tibbi Date: Tue, 22 Sep 2020 14:45:59 +0200 Subject: [PATCH 27/53] updating changelog --- CHANGELOG.md | 5 +++++ fastlane/metadata/android/en-US/changelogs/13.txt | 1 + 2 files changed, 6 insertions(+) create mode 100644 fastlane/metadata/android/en-US/changelogs/13.txt diff --git a/CHANGELOG.md b/CHANGELOG.md index 0d4fef4d..d85e557d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ Changelog ========== +Version 5.4.2 *(2020-09-22)* +---------------------------- + + * Fix incoming message notifications sometimes not being shown + Version 5.4.1 *(2020-08-23)* ---------------------------- diff --git a/fastlane/metadata/android/en-US/changelogs/13.txt b/fastlane/metadata/android/en-US/changelogs/13.txt new file mode 100644 index 00000000..48427789 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/13.txt @@ -0,0 +1 @@ + * Fix incoming message notifications sometimes not being shown From 97fabfec1afeed2a5d631e81e115b49de3d4cc69 Mon Sep 17 00:00:00 2001 From: tibbi Date: Wed, 23 Sep 2020 10:08:07 +0200 Subject: [PATCH 28/53] fix a crash at receiving MMS --- .../simplemobiletools/smsmessenger/receivers/MmsReceiver.kt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/MmsReceiver.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/MmsReceiver.kt index 920eb34f..e2dc15f6 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/MmsReceiver.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/MmsReceiver.kt @@ -35,7 +35,9 @@ class MmsReceiver : com.klinker.android.send_message.MmsReceivedReceiver() { Handler(Looper.getMainLooper()).post { context.showReceivedMessageNotification(address, mms.body, mms.thread, glideBitmap) val conversation = context.getConversations(mms.thread.toLong()).firstOrNull() ?: return@post - context.conversationsDB.insertOrUpdate(conversation) + ensureBackgroundThread { + context.conversationsDB.insertOrUpdate(conversation) + } context.updateUnreadCountBadge(context.conversationsDB.getUnreadConversations()) } } From 39a28a2471b79c84b62fc11cbf7f8b163c491a49 Mon Sep 17 00:00:00 2001 From: tibbi Date: Wed, 23 Sep 2020 10:11:44 +0200 Subject: [PATCH 29/53] update version to 5.4.3 --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 45de363e..70595a2f 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -16,8 +16,8 @@ android { applicationId "com.simplemobiletools.smsmessenger" minSdkVersion 22 targetSdkVersion 30 - versionCode 13 - versionName "5.4.2" + versionCode 14 + versionName "5.4.3" setProperty("archivesBaseName", "sms-messenger") } From 41966e53ab71c9605bffa48b09a5ba62308a9ae0 Mon Sep 17 00:00:00 2001 From: tibbi Date: Wed, 23 Sep 2020 10:11:52 +0200 Subject: [PATCH 30/53] updating changelog --- CHANGELOG.md | 5 +++++ fastlane/metadata/android/en-US/changelogs/14.txt | 1 + 2 files changed, 6 insertions(+) create mode 100644 fastlane/metadata/android/en-US/changelogs/14.txt diff --git a/CHANGELOG.md b/CHANGELOG.md index d85e557d..498f3333 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ Changelog ========== +Version 5.4.3 *(2020-09-23)* +---------------------------- + + * Fixing a crash at receiving MMS + Version 5.4.2 *(2020-09-22)* ---------------------------- diff --git a/fastlane/metadata/android/en-US/changelogs/14.txt b/fastlane/metadata/android/en-US/changelogs/14.txt new file mode 100644 index 00000000..d1407a53 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/14.txt @@ -0,0 +1 @@ + * Fixing a crash at receiving MMS From 4668629b30e02aa40ef0e67d2b240d4ac854fc75 Mon Sep 17 00:00:00 2001 From: tibbi Date: Wed, 23 Sep 2020 14:32:59 +0200 Subject: [PATCH 31/53] really fix crashing at received MMS messages --- .../com/simplemobiletools/smsmessenger/receivers/MmsReceiver.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/MmsReceiver.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/MmsReceiver.kt index e2dc15f6..e8ae7d76 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/MmsReceiver.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/MmsReceiver.kt @@ -37,8 +37,8 @@ class MmsReceiver : com.klinker.android.send_message.MmsReceivedReceiver() { val conversation = context.getConversations(mms.thread.toLong()).firstOrNull() ?: return@post ensureBackgroundThread { context.conversationsDB.insertOrUpdate(conversation) + context.updateUnreadCountBadge(context.conversationsDB.getUnreadConversations()) } - context.updateUnreadCountBadge(context.conversationsDB.getUnreadConversations()) } } } From 195bccca4fdc7ff312da7e11eee108373ebe5fa0 Mon Sep 17 00:00:00 2001 From: tibbi Date: Wed, 23 Sep 2020 14:35:19 +0200 Subject: [PATCH 32/53] update version to 5.4.4 --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 70595a2f..7e4c0ba9 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -16,8 +16,8 @@ android { applicationId "com.simplemobiletools.smsmessenger" minSdkVersion 22 targetSdkVersion 30 - versionCode 14 - versionName "5.4.3" + versionCode 16 + versionName "5.4.4" setProperty("archivesBaseName", "sms-messenger") } From 3b6284cd274a07378ede54893c9bdcae955171b9 Mon Sep 17 00:00:00 2001 From: tibbi Date: Wed, 23 Sep 2020 14:35:27 +0200 Subject: [PATCH 33/53] updating changelog --- CHANGELOG.md | 5 +++++ fastlane/metadata/android/en-US/changelogs/15.txt | 1 + 2 files changed, 6 insertions(+) create mode 100644 fastlane/metadata/android/en-US/changelogs/15.txt diff --git a/CHANGELOG.md b/CHANGELOG.md index 498f3333..e332694f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ Changelog ========== +Version 5.4.4 *(2020-09-23)* +---------------------------- + + * Fixing a crash at receiving MMS + Version 5.4.3 *(2020-09-23)* ---------------------------- diff --git a/fastlane/metadata/android/en-US/changelogs/15.txt b/fastlane/metadata/android/en-US/changelogs/15.txt new file mode 100644 index 00000000..d1407a53 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/15.txt @@ -0,0 +1 @@ + * Fixing a crash at receiving MMS From 90868a23d665f5b19fb25685484a98737c1ace07 Mon Sep 17 00:00:00 2001 From: davidre345 <69015841+davidre345@users.noreply.github.com> Date: Fri, 2 Oct 2020 19:38:26 +0200 Subject: [PATCH 34/53] Adding galician strings --- app/src/main/res/values-gl | 72 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 app/src/main/res/values-gl diff --git a/app/src/main/res/values-gl b/app/src/main/res/values-gl new file mode 100644 index 00000000..ef3cabd1 --- /dev/null +++ b/app/src/main/res/values-gl @@ -0,0 +1,72 @@ + + Simple SMS Messenger + Mensaxe SMS + Escribir unha mensaxe… + Mensaxe non enviada + Engadir persoa + Anexo + Non se atoparon conversas + Iniciar unha conversa + Responder + + + Nova conversa + Engadir contacto ou número… + Suxerencias + + + SMS recibida + Nova mensaxe + Marcar como lida + Marcar como non lida + + + Ten a certeza de que desexa eliminar todas as mensaxes desta conversa? + + + + %d conversa + %d conversas + + + + + %d mensaxe + %d mensaxes + + + + Por que o aplicativo necesita acceder a Internet? + Infelizmente é a única forma para poder enviar anexos MMS. A incapacidade de non conseguir enviar MMS sería unha enorme desvantaxe comparativamente a outros aplicativos e, por iso, tomamos esta decisión. Pero, como habitualmente, o aplicativo non ten anuncios, non rastrea os utilizadores nin recolle datos persoais. Este permiso só é necesario para enviar as MMS. + + + + Simple SMS Messenger - Xestor de mensaxes + + Aplictivo simple para xestionar SMS e MMS sen anuncios. + + Unha excelente forma para manter o contacto cos seus amigos e familiares. Tamén pode ser usada para mensaxes de grupo e posibilita o bloqueo de números de teléfono nas versións superiores a Android 7. + + Permite a utilización de varios formatos de data e das horas. + + É un aplicativo pequeno, que fai que a súa descarga sexa moi rápida. + + Fai que estea dispoñible un deseño atractivo e un tema escuro por defecto. Como non necesita o acceso a Internet, tes máis privacidade, seguranza e estabilidade. + + Non ten anuncios nin permisos innecesarios. É de código aberto e permite a personalización das cores. + + Visita a páxina a través desta ligazón: + https://www.simplemobiletools.com + + Facebook: + https://www.facebook.com/simplemobiletools + + Reddit: + https://www.reddit.com/r/SimpleMobileTools + + + + From 1aada2a0bf63a7d8dacbddbbfac97e1528324fe7 Mon Sep 17 00:00:00 2001 From: Tommy He Date: Sat, 17 Oct 2020 15:36:57 +0800 Subject: [PATCH 35/53] Add zh-CN translation. --- app/src/main/res/values-zh-rCN/strings.xml | 73 ++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 app/src/main/res/values-zh-rCN/strings.xml diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml new file mode 100644 index 00000000..2b8615a4 --- /dev/null +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -0,0 +1,73 @@ + + 简易短信 + 短信 + 输入一个消息… + 消息尚未发送。 + 添加人 + 附件 + 未找到保存的对话 + 开始一个对话 + 回复 + + + 新的对话 + 添加联系人或者号码… + 建议 + + + 接收到的短信 + 新消息 + 标记为已读 + 标记为未读 + + + 您确定您想要删除这个对话的所有消息? + + + + %d 个对话 + %d 个对话 + + + + + %d 个消息 + %d 个消息 + + + + 为什么该应用需要访问互联网? + 很遗憾这对于发送彩信附件是必须的。如果不能发送彩信的话这相比其他应用会是一个巨大的劣势,所以我们决定这么采取现在的方式。 + 但是和其他应用一样,不包含广告、追踪或者任意的分析工具, 互联网访问仅用于发送彩信。 + + + + 简易短信 - 轻松管理消息 + + 无广告的管理短信和彩信的轻松和简便方式。 + + 发送短信和彩信是一个和您亲友保持联系的绝佳方式。这个应用也可以可以正确处理群消息,在 Android 7 以上版本亦可阻止号码。 + + 它提供多个日期格式以便选择,符合您使用习惯。您也可以在 12 和 24 时制格式之间选择。 + + 它相对于其他竞品有着极小的大小,使得其下载非常快。 + + 它遵循质感设计且默认应用黑暗模式,提供便于使用的极佳的用户体验。 + + 不包含广告及非必要的权限,而且完全开放源代码,并提供自定义颜色。 + + 于此查看简易工具系列全套: + https://www.simplemobiletools.com + + Facebook: + https://www.facebook.com/simplemobiletools + + Reddit: + https://www.reddit.com/r/SimpleMobileTools + + + + From ab5341a7e21ce70e56d2ba3b3c64dc177db11198 Mon Sep 17 00:00:00 2001 From: Aur36 Date: Mon, 26 Oct 2020 11:13:43 +0100 Subject: [PATCH 36/53] Add French translation --- app/src/main/res/values-fr/strings.xml | 73 ++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 app/src/main/res/values-fr/strings.xml diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml new file mode 100644 index 00000000..fed623ab --- /dev/null +++ b/app/src/main/res/values-fr/strings.xml @@ -0,0 +1,73 @@ + + Simple SMS Messenger + SMS Messenger + Écrivez un message... + Le message n\'a pas été envoyé. + Ajouter une personne + Pièce jointe + Aucune conversation enregistrée n\'a été trouvée + Commencer une conversation + Répondre + + + Nouvelle conversation + Ajouter un contact ou un numéro... + Suggestions + + + SMS reçu + Nouveau message + Marquer comme lu + Marquer comme non lu + + + Êtes-vous sûr de vouloir supprimer tous les messages de cette conversation ? + + + + %d conversation + %d conversations + + + + + %d message + %d messages + + + + Pourquoi cette application a besoin d\'un accès à internet ? + Malheureusement, cela est nécessaire pour envoyer des pièces jointes dans les MMS. Ne pas pouvoir envoyer de MMS serait un énorme désavantage comparé à d\'autres applications, nous avons donc décidé de faire ainsi. + Cependant, comme toujours, il n\'y a aucune publicité, traqueur ou analyseur de quelque sorte, internet n\'est utilisé que pour envoyer des MMS. + + + + Simple SMS Messenger - Gérez vos messages aisément + + Une façon simple et rapide de gérer ses SMS et MMS sans publicités. + + Une excellente façon de rester en contact avec vos proches, en envoyant à la fois des SMS et des MMS. L\'application gère parfaitement les messages de groupe, tout comme le blocage des numéros sur Android 7+. + + Elle offre un choix large de format de date, pour être confortable à utiliser. Vous pouvez choisir entre un format 12 et 24 heures. + + La taille de l\'application est très légère comparée à la concurrence, ce qui la rend rapide à télécharger. + + Avec un Material Design et un thème sombre par défaut, elle offre une excellente expérience utilisateur pour une utilisation facile. L\'absence d\'accès à internet vous donne plus de confidentialité, de sécurité et de stabilité que les autres applications. + + Ne contient aucune publicité ou autorisation inutile. Elle est entièrement open source, avec des couleurs personnalisables. + + Découvrez la suite complète des applications Simple Mobile Tools ici : + https://www.simplemobiletools.com + + Facebook: + https://www.facebook.com/simplemobiletools + + Reddit: + https://www.reddit.com/r/SimpleMobileTools + + + + From ba23de4c7eb745a3df2151d1485491158a51e8cc Mon Sep 17 00:00:00 2001 From: tibbi Date: Tue, 27 Oct 2020 22:35:33 +0100 Subject: [PATCH 37/53] updating commons to 5.31.11 --- app/build.gradle | 2 +- .../smsmessenger/activities/MainActivity.kt | 3 ++- .../smsmessenger/activities/ThreadActivity.kt | 4 ++-- .../simplemobiletools/smsmessenger/extensions/Context.kt | 6 +++--- app/src/main/res/values/donottranslate.xml | 5 +++++ build.gradle | 2 +- 6 files changed, 14 insertions(+), 8 deletions(-) create mode 100644 app/src/main/res/values/donottranslate.xml diff --git a/app/build.gradle b/app/build.gradle index 7e4c0ba9..bbc804e1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -56,7 +56,7 @@ android { } dependencies { - implementation 'com.simplemobiletools:commons:5.30.12' + implementation 'com.simplemobiletools:commons:5.31.11' implementation 'org.greenrobot:eventbus:3.2.0' implementation 'com.klinkerapps:android-smsmms:5.2.6' implementation 'com.github.tibbi:IndicatorFastScroll:08f512858a' 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 cda05a5f..61c47ca8 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/MainActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/MainActivity.kt @@ -290,7 +290,8 @@ class MainActivity : SimpleActivity() { val faqItems = arrayListOf( FAQItem(R.string.faq_2_title_commons, R.string.faq_2_text_commons), - FAQItem(R.string.faq_6_title_commons, R.string.faq_6_text_commons) + FAQItem(R.string.faq_6_title_commons, R.string.faq_6_text_commons), + FAQItem(R.string.faq_9_title_commons, R.string.faq_9_text_commons) ) startAboutActivity(R.string.app_name, licenses, BuildConfig.VERSION_NAME, faqItems, true) diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt index 0831549f..4aea1606 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt @@ -135,7 +135,7 @@ class ThreadActivity : SimpleActivity() { return@ensureBackgroundThread } - val contact = SimpleContact(0, 0, name, "", arrayListOf(number)) + val contact = SimpleContact(0, 0, name, "", arrayListOf(number), ArrayList(), ArrayList()) participants.add(contact) } @@ -252,7 +252,7 @@ class ThreadActivity : SimpleActivity() { confirm_inserted_number?.setOnClickListener { val number = add_contact_or_number.value - val contact = SimpleContact(number.hashCode(), number.hashCode(), number, "", arrayListOf(number)) + val contact = SimpleContact(number.hashCode(), number.hashCode(), number, "", arrayListOf(number), ArrayList(), ArrayList()) addSelectedContact(contact) } } 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 7c8a734b..9416102e 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Context.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Context.kt @@ -86,7 +86,7 @@ fun Context.getMessages(threadId: Int): ArrayList { val read = cursor.getIntValue(Sms.READ) == 1 val thread = cursor.getIntValue(Sms.THREAD_ID) val subscriptionId = cursor.getIntValue(Sms.SUBSCRIPTION_ID) - val participant = SimpleContact(0, 0, senderName, photoUri, arrayListOf(senderNumber)) + val participant = SimpleContact(0, 0, senderName, photoUri, arrayListOf(senderNumber), ArrayList(), ArrayList()) val isMMS = false val message = Message(id, body, type, arrayListOf(participant), date, read, thread, isMMS, null, senderName, photoUri, subscriptionId) messages.add(message) @@ -337,7 +337,7 @@ fun Context.getThreadParticipants(threadId: Int, contactsMap: HashMap): Arr } } - val contact = SimpleContact(0, 0, senderName, photoUri, arrayListOf(senderNumber)) + val contact = SimpleContact(0, 0, senderName, photoUri, arrayListOf(senderNumber), ArrayList(), ArrayList()) if (!contacts.map { it.phoneNumbers.first().trimToComparableNumber() }.contains(senderNumber.trimToComparableNumber())) { contacts.add(contact) } diff --git a/app/src/main/res/values/donottranslate.xml b/app/src/main/res/values/donottranslate.xml new file mode 100644 index 00000000..24f6140e --- /dev/null +++ b/app/src/main/res/values/donottranslate.xml @@ -0,0 +1,5 @@ + + + com.simplemobiletools.smsmessenger + + diff --git a/build.gradle b/build.gradle index a0e7049e..12c54df1 100644 --- a/build.gradle +++ b/build.gradle @@ -8,7 +8,7 @@ buildscript { } dependencies { - classpath 'com.android.tools.build:gradle:4.0.1' + classpath 'com.android.tools.build:gradle:4.0.2' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" // NOTE: Do not place your application dependencies here; they belong From fdf2af410cd277ff85c333373838fb007a528666 Mon Sep 17 00:00:00 2001 From: tibbi Date: Tue, 27 Oct 2020 22:45:25 +0100 Subject: [PATCH 38/53] fix #91, properly handle sending SMS to multiple recipients --- .../smsmessenger/activities/NewConversationActivity.kt | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/NewConversationActivity.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/NewConversationActivity.kt index cc276e4d..efb1eb16 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/NewConversationActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/NewConversationActivity.kt @@ -5,6 +5,7 @@ import android.net.Uri import android.os.Bundle import android.view.Menu import android.view.WindowManager +import com.google.gson.Gson import com.reddit.indicatorfastscroll.FastScrollItemIndicator import com.simplemobiletools.commons.extensions.* import com.simplemobiletools.commons.helpers.MyContactsContentProvider @@ -187,11 +188,13 @@ class NewConversationActivity : SimpleActivity() { private fun launchThreadActivity(phoneNumber: String, name: String) { val text = intent.getStringExtra(Intent.EXTRA_TEXT) ?: "" + val numbers = phoneNumber.split(";").toSet() + val number = if (numbers.size == 1) phoneNumber else Gson().toJson(numbers) Intent(this, ThreadActivity::class.java).apply { - putExtra(THREAD_ID, getThreadId(phoneNumber).toInt()) + putExtra(THREAD_ID, getThreadId(numbers).toInt()) putExtra(THREAD_TITLE, name) putExtra(THREAD_TEXT, text) - putExtra(THREAD_NUMBER, phoneNumber) + putExtra(THREAD_NUMBER, number) if (intent.action == Intent.ACTION_SEND && intent.extras?.containsKey(Intent.EXTRA_STREAM) == true) { val uri = intent.getParcelableExtra(Intent.EXTRA_STREAM) From f70c3311622f3280f0d335f8865baeea0792059b Mon Sep 17 00:00:00 2001 From: tibbi Date: Tue, 27 Oct 2020 23:15:44 +0100 Subject: [PATCH 39/53] update version to 5.4.5 --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index bbc804e1..7a89b6fe 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -16,8 +16,8 @@ android { applicationId "com.simplemobiletools.smsmessenger" minSdkVersion 22 targetSdkVersion 30 - versionCode 16 - versionName "5.4.4" + versionCode 17 + versionName "5.4.5" setProperty("archivesBaseName", "sms-messenger") } From 48416fbc77047388295bdaa59e1fab7fe074f522 Mon Sep 17 00:00:00 2001 From: tibbi Date: Tue, 27 Oct 2020 23:15:51 +0100 Subject: [PATCH 40/53] updating changelog --- CHANGELOG.md | 5 +++++ fastlane/metadata/android/en-US/changelogs/17.txt | 1 + 2 files changed, 6 insertions(+) create mode 100644 fastlane/metadata/android/en-US/changelogs/17.txt diff --git a/CHANGELOG.md b/CHANGELOG.md index e332694f..0464d3f2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ Changelog ========== +Version 5.4.5 *(2020-10-27)* +---------------------------- + + * Fixed some smaller glitches + translation improvements + Version 5.4.4 *(2020-09-23)* ---------------------------- diff --git a/fastlane/metadata/android/en-US/changelogs/17.txt b/fastlane/metadata/android/en-US/changelogs/17.txt new file mode 100644 index 00000000..20f8c7b5 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/17.txt @@ -0,0 +1 @@ + * Fixed some smaller glitches + translation improvements From 738c41715b536e4fb744794e64fedafab979625c Mon Sep 17 00:00:00 2001 From: tibbi Date: Tue, 3 Nov 2020 18:39:30 +0100 Subject: [PATCH 41/53] updating gradle and commons --- app/build.gradle | 2 +- build.gradle | 2 +- gradle/wrapper/gradle-wrapper.properties | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 7a89b6fe..52940152 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -56,7 +56,7 @@ android { } dependencies { - implementation 'com.simplemobiletools:commons:5.31.11' + implementation 'com.simplemobiletools:commons:5.31.20' implementation 'org.greenrobot:eventbus:3.2.0' implementation 'com.klinkerapps:android-smsmms:5.2.6' implementation 'com.github.tibbi:IndicatorFastScroll:08f512858a' diff --git a/build.gradle b/build.gradle index 12c54df1..b55955d2 100644 --- a/build.gradle +++ b/build.gradle @@ -8,7 +8,7 @@ buildscript { } dependencies { - classpath 'com.android.tools.build:gradle:4.0.2' + classpath 'com.android.tools.build:gradle:4.1.0' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" // NOTE: Do not place your application dependencies here; they belong diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index e946aba2..a99abc9d 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Mon Jul 27 21:27:47 CEST 2020 +#Tue Nov 03 16:00:32 CET 2020 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-bin.zip From 953d521e476890671b95ee70de182e2142aeba0f Mon Sep 17 00:00:00 2001 From: tibbi Date: Tue, 3 Nov 2020 19:23:49 +0100 Subject: [PATCH 42/53] make sure received messages are stored on the background thread --- app/build.gradle | 2 +- .../smsmessenger/receivers/SmsReceiver.kt | 9 +++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 52940152..5841bc00 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -56,7 +56,7 @@ android { } dependencies { - implementation 'com.simplemobiletools:commons:5.31.20' + implementation 'com.simplemobiletools:commons:5.31.21' implementation 'org.greenrobot:eventbus:3.2.0' implementation 'com.klinkerapps:android-smsmms:5.2.6' implementation 'com.github.tibbi:IndicatorFastScroll:08f512858a' diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/SmsReceiver.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/SmsReceiver.kt index 37380eca..a6e7e6d0 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/SmsReceiver.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/SmsReceiver.kt @@ -30,15 +30,16 @@ class SmsReceiver : BroadcastReceiver() { } if (!context.isNumberBlocked(address)) { - context.insertNewSMS(address, subject, body, date, read, threadId, type, subscriptionId) - context.showReceivedMessageNotification(address, body, threadId.toInt(), null) - refreshMessages() - ensureBackgroundThread { + context.insertNewSMS(address, subject, body, date, read, threadId, type, subscriptionId) + val conversation = context.getConversations(threadId).firstOrNull() ?: return@ensureBackgroundThread context.conversationsDB.insertOrUpdate(conversation) context.updateUnreadCountBadge(context.conversationsDB.getUnreadConversations()) } + + context.showReceivedMessageNotification(address, body, threadId.toInt(), null) + refreshMessages() } } } From d1fe3531e164da3803926afd8776d5fd39d919ec Mon Sep 17 00:00:00 2001 From: tibbi Date: Tue, 3 Nov 2020 19:39:59 +0100 Subject: [PATCH 43/53] adding some crashfixes --- .../smsmessenger/activities/MainActivity.kt | 12 ++++++++++-- .../activities/NewConversationActivity.kt | 11 +++++++---- .../smsmessenger/activities/ThreadActivity.kt | 2 +- .../smsmessenger/adapters/ConversationsAdapter.kt | 6 +++++- .../smsmessenger/extensions/Context.kt | 6 +++++- 5 files changed, 28 insertions(+), 9 deletions(-) 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 61c47ca8..3e57dd0e 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/MainActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/MainActivity.kt @@ -138,7 +138,10 @@ class MainActivity : SimpleActivity() { handlePermission(PERMISSION_READ_CONTACTS) { initMessenger() bus = EventBus.getDefault() - bus!!.register(this) + try { + bus!!.register(this) + } catch (e: Exception) { + } } } else { finish() @@ -165,7 +168,12 @@ class MainActivity : SimpleActivity() { private fun getCachedConversations() { ensureBackgroundThread { - val conversations = conversationsDB.getAll().sortedByDescending { it.date }.toMutableList() as ArrayList + val conversations = try { + conversationsDB.getAll().sortedByDescending { it.date }.toMutableList() as ArrayList + } catch (e: Exception) { + ArrayList() + } + updateUnreadCountBadge(conversations) runOnUiThread { setupConversations(conversations) diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/NewConversationActivity.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/NewConversationActivity.kt index efb1eb16..68b9c411 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/NewConversationActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/NewConversationActivity.kt @@ -161,10 +161,13 @@ class NewConversationActivity : SimpleActivity() { layoutInflater.inflate(R.layout.item_suggested_contact, null).apply { suggested_contact_name.text = contact.name suggested_contact_name.setTextColor(baseConfig.textColor) - SimpleContactsHelper(this@NewConversationActivity).loadContactImage(contact.photoUri, suggested_contact_image, contact.name) - suggestions_holder.addView(this) - setOnClickListener { - launchThreadActivity(contact.phoneNumbers.first(), contact.name) + + if (!isDestroyed) { + SimpleContactsHelper(this@NewConversationActivity).loadContactImage(contact.photoUri, suggested_contact_image, contact.name) + suggestions_holder.addView(this) + setOnClickListener { + launchThreadActivity(contact.phoneNumbers.first(), contact.name) + } } } } diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt index 4aea1606..6dc53da3 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt @@ -314,7 +314,7 @@ class ThreadActivity : SimpleActivity() { val availableSIMs = SubscriptionManager.from(this).activeSubscriptionInfoList ?: return if (availableSIMs.size > 1) { availableSIMs.forEachIndexed { index, subscriptionInfo -> - var label = subscriptionInfo.displayName.toString() + var label = subscriptionInfo.displayName?.toString() ?: "" if (subscriptionInfo.number?.isNotEmpty() == true) { label += " (${subscriptionInfo.number})" } diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ConversationsAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ConversationsAdapter.kt index a1d0a118..860d6d85 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ConversationsAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ConversationsAdapter.kt @@ -135,7 +135,11 @@ class ConversationsAdapter(activity: SimpleActivity, var conversations: ArrayLis activity.deleteConversation(it.thread_id) activity.notificationManager.cancel(it.thread_id) } - conversations.removeAll(conversationsToRemove) + + try { + conversations.removeAll(conversationsToRemove) + } catch (ignored: Exception) { + } activity.runOnUiThread { if (conversationsToRemove.isEmpty()) { 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 9416102e..d9590a91 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Context.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Context.kt @@ -475,7 +475,11 @@ fun Context.deleteConversation(threadId: Int) { var uri = Sms.CONTENT_URI val selection = "${Sms.THREAD_ID} = ?" val selectionArgs = arrayOf(threadId.toString()) - contentResolver.delete(uri, selection, selectionArgs) + try { + contentResolver.delete(uri, selection, selectionArgs) + } catch (e: Exception) { + showErrorToast(e) + } uri = Mms.CONTENT_URI contentResolver.delete(uri, selection, selectionArgs) From 94b2d7328e93e43943934db4558ab012113738bf Mon Sep 17 00:00:00 2001 From: tibbi Date: Tue, 3 Nov 2020 19:43:10 +0100 Subject: [PATCH 44/53] make the message bubbles a bit wider, 80% --- app/src/main/res/layout/item_received_message.xml | 2 +- app/src/main/res/layout/item_sent_message.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/res/layout/item_received_message.xml b/app/src/main/res/layout/item_received_message.xml index 7d476239..c36e4b8c 100644 --- a/app/src/main/res/layout/item_received_message.xml +++ b/app/src/main/res/layout/item_received_message.xml @@ -18,7 +18,7 @@ app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" - app:layout_constraintWidth_percent="0.7"> + app:layout_constraintWidth_percent="0.8"> + app:layout_constraintWidth_percent="0.8"> Date: Tue, 3 Nov 2020 19:58:39 +0100 Subject: [PATCH 45/53] add a new string about showing char counter --- app/build.gradle | 2 +- app/src/main/res/values-de/strings.xml | 1 + app/src/main/res/values-el/strings.xml | 1 + app/src/main/res/values-es/strings.xml | 1 + app/src/main/res/values-fr/strings.xml | 1 + app/src/main/res/values-lt/strings.xml | 1 + app/src/main/res/values-ml/strings.xml | 1 + app/src/main/res/values-nl/strings.xml | 1 + app/src/main/res/values-pt/strings.xml | 1 + app/src/main/res/values-ru/strings.xml | 1 + app/src/main/res/values-sk/strings.xml | 1 + app/src/main/res/values-zh-rCN/strings.xml | 1 + app/src/main/res/values/strings.xml | 1 + 13 files changed, 13 insertions(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 5841bc00..69ff5e04 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -56,7 +56,7 @@ android { } dependencies { - implementation 'com.simplemobiletools:commons:5.31.21' + implementation 'com.simplemobiletools:commons:5.31.22' implementation 'org.greenrobot:eventbus:3.2.0' implementation 'com.klinkerapps:android-smsmms:5.2.6' implementation 'com.github.tibbi:IndicatorFastScroll:08f512858a' diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 2659bceb..fc05292e 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -8,6 +8,7 @@ Keine gespeicherten Chats gefunden Neuen Chat beginnen Antworten + Show a character counter at writing messages Neuer Chat diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index b9b74593..7b4d27a0 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -8,6 +8,7 @@ Δεν βρέθηκαν αποθηκευμένες συνομιλίες Έναρξη συνομιλίας Απάντηση + Show a character counter at writing messages Νέα συνομιλία diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 250387ff..0cb67e3e 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -8,6 +8,7 @@ No se han encontrado conversaciones Inicia una conversación Responder + Show a character counter at writing messages Nueva conversación diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index fed623ab..c5316090 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -8,6 +8,7 @@ Aucune conversation enregistrée n\'a été trouvée Commencer une conversation Répondre + Show a character counter at writing messages Nouvelle conversation diff --git a/app/src/main/res/values-lt/strings.xml b/app/src/main/res/values-lt/strings.xml index d56da48b..45372922 100644 --- a/app/src/main/res/values-lt/strings.xml +++ b/app/src/main/res/values-lt/strings.xml @@ -8,6 +8,7 @@ Nebuvo rasta išsaugotų pokalbių Pradėtipokalbį Reply + Show a character counter at writing messages Naujas pokalbis diff --git a/app/src/main/res/values-ml/strings.xml b/app/src/main/res/values-ml/strings.xml index a0c2d877..c6b7dffc 100644 --- a/app/src/main/res/values-ml/strings.xml +++ b/app/src/main/res/values-ml/strings.xml @@ -8,6 +8,7 @@ സ്റ്റോർ ചെയ്ത സംഭാഷണങ്ങളൊന്നും കണ്ടെത്തിയില്ല ഒരു സംഭാഷണം ആരംഭിക്കുക ഒരു സംഭാഷണം ആരംഭിക്കുക + Show a character counter at writing messages പുതിയ സംഭാഷണം diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index 34d570c0..87c66bf6 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -8,6 +8,7 @@ Geen opgeslagen berichten gevonden Een gesprek starten Beantwoorden + Show a character counter at writing messages Nieuw gesprek diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index 977a1839..e91e9a06 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -8,6 +8,7 @@ Não foram encontradas conversas Iniciar uma conversa Responder + Show a character counter at writing messages Nova conversa diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index de374dbc..5b2531b9 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -8,6 +8,7 @@ Нет сохранённых переписок Начать переписку Ответ + Show a character counter at writing messages Новая переписка diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml index 5964e8b0..48028ba9 100644 --- a/app/src/main/res/values-sk/strings.xml +++ b/app/src/main/res/values-sk/strings.xml @@ -8,6 +8,7 @@ Nenašli sa žiadne uložené konverzácie Začať konverzáciu Odpovedať + Zobraziť počítadlo znakov pri písaní správ Nová konverzácia diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 2b8615a4..947cef63 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -8,6 +8,7 @@ 未找到保存的对话 开始一个对话 回复 + Show a character counter at writing messages 新的对话 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 81ac90b0..ce68413e 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -8,6 +8,7 @@ No stored conversations have been found Start a conversation Reply + Show a character counter at writing messages New conversation From 7d8e1a21556e510f4e523e27c846c2e0bfaa1dd2 Mon Sep 17 00:00:00 2001 From: tibbi Date: Tue, 3 Nov 2020 22:15:28 +0100 Subject: [PATCH 46/53] allow copying conversation numbers to clipboard --- .../smsmessenger/adapters/ConversationsAdapter.kt | 8 ++++++++ app/src/main/res/menu/cab_conversations.xml | 4 ++++ 2 files changed, 12 insertions(+) diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ConversationsAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ConversationsAdapter.kt index 860d6d85..0713b7aa 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ConversationsAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ConversationsAdapter.kt @@ -39,6 +39,7 @@ class ConversationsAdapter(activity: SimpleActivity, var conversations: ArrayLis menu.apply { findItem(R.id.cab_add_number_to_contact).isVisible = isOneItemSelected() && getSelectedItems().firstOrNull()?.isGroupConversation == false findItem(R.id.cab_block_number).isVisible = isNougatPlus() + findItem(R.id.cab_copy_number).isVisible = isOneItemSelected() && getSelectedItems().firstOrNull()?.isGroupConversation == false } } @@ -50,6 +51,7 @@ class ConversationsAdapter(activity: SimpleActivity, var conversations: ArrayLis when (id) { R.id.cab_add_number_to_contact -> addNumberToContact() R.id.cab_block_number -> askConfirmBlock() + R.id.cab_copy_number -> copyNumberToClipboard() R.id.cab_select_all -> selectAll() R.id.cab_delete -> askConfirmDelete() } @@ -110,6 +112,12 @@ class ConversationsAdapter(activity: SimpleActivity, var conversations: ArrayLis } } + private fun copyNumberToClipboard() { + val conversation = getSelectedItems().firstOrNull() ?: return + activity.copyToClipboard(conversation.phoneNumber) + finishActMode() + } + private fun askConfirmDelete() { val itemsCnt = selectedKeys.size val items = resources.getQuantityString(R.plurals.delete_conversations, itemsCnt, itemsCnt) diff --git a/app/src/main/res/menu/cab_conversations.xml b/app/src/main/res/menu/cab_conversations.xml index 84e02dc5..8085dcde 100644 --- a/app/src/main/res/menu/cab_conversations.xml +++ b/app/src/main/res/menu/cab_conversations.xml @@ -11,6 +11,10 @@ android:icon="@drawable/ic_minus_circle_vector" android:title="@string/block_number" app:showAsAction="ifRoom" /> + Date: Tue, 3 Nov 2020 22:24:17 +0100 Subject: [PATCH 47/53] allow dialing phone numbers of conversation recipiends --- .../adapters/ConversationsAdapter.kt | 19 ++++++++++++++++++- app/src/main/res/menu/cab_conversations.xml | 5 +++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ConversationsAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ConversationsAdapter.kt index 0713b7aa..a5ab8207 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ConversationsAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ConversationsAdapter.kt @@ -2,6 +2,7 @@ package com.simplemobiletools.smsmessenger.adapters import android.content.Intent import android.graphics.Typeface +import android.net.Uri import android.text.TextUtils import android.util.TypedValue import android.view.Menu @@ -37,8 +38,9 @@ class ConversationsAdapter(activity: SimpleActivity, var conversations: ArrayLis override fun prepareActionMode(menu: Menu) { menu.apply { - findItem(R.id.cab_add_number_to_contact).isVisible = isOneItemSelected() && getSelectedItems().firstOrNull()?.isGroupConversation == false findItem(R.id.cab_block_number).isVisible = isNougatPlus() + findItem(R.id.cab_add_number_to_contact).isVisible = isOneItemSelected() && getSelectedItems().firstOrNull()?.isGroupConversation == false + findItem(R.id.cab_dial_number).isVisible = isOneItemSelected() && getSelectedItems().firstOrNull()?.isGroupConversation == false findItem(R.id.cab_copy_number).isVisible = isOneItemSelected() && getSelectedItems().firstOrNull()?.isGroupConversation == false } } @@ -51,6 +53,7 @@ class ConversationsAdapter(activity: SimpleActivity, var conversations: ArrayLis when (id) { R.id.cab_add_number_to_contact -> addNumberToContact() R.id.cab_block_number -> askConfirmBlock() + R.id.cab_dial_number -> dialNumber() R.id.cab_copy_number -> copyNumberToClipboard() R.id.cab_select_all -> selectAll() R.id.cab_delete -> askConfirmDelete() @@ -112,6 +115,20 @@ class ConversationsAdapter(activity: SimpleActivity, var conversations: ArrayLis } } + private fun dialNumber() { + val conversation = getSelectedItems().firstOrNull() ?: return + Intent(Intent.ACTION_DIAL).apply { + data = Uri.fromParts("tel", conversation.phoneNumber, null) + + if (resolveActivity(activity.packageManager) != null) { + activity.startActivity(this) + finishActMode() + } else { + activity.toast(R.string.no_app_found) + } + } + } + private fun copyNumberToClipboard() { val conversation = getSelectedItems().firstOrNull() ?: return activity.copyToClipboard(conversation.phoneNumber) diff --git a/app/src/main/res/menu/cab_conversations.xml b/app/src/main/res/menu/cab_conversations.xml index 8085dcde..a870e35c 100644 --- a/app/src/main/res/menu/cab_conversations.xml +++ b/app/src/main/res/menu/cab_conversations.xml @@ -11,6 +11,11 @@ android:icon="@drawable/ic_minus_circle_vector" android:title="@string/block_number" app:showAsAction="ifRoom" /> + Date: Tue, 3 Nov 2020 23:26:43 +0100 Subject: [PATCH 48/53] removing the Select All cab menu button --- .../smsmessenger/adapters/ConversationsAdapter.kt | 1 - .../simplemobiletools/smsmessenger/adapters/ThreadAdapter.kt | 1 - app/src/main/res/menu/cab_conversations.xml | 5 ----- app/src/main/res/menu/cab_thread.xml | 5 ----- 4 files changed, 12 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ConversationsAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ConversationsAdapter.kt index a5ab8207..9bf1df22 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ConversationsAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ConversationsAdapter.kt @@ -55,7 +55,6 @@ class ConversationsAdapter(activity: SimpleActivity, var conversations: ArrayLis R.id.cab_block_number -> askConfirmBlock() R.id.cab_dial_number -> dialNumber() R.id.cab_copy_number -> copyNumberToClipboard() - R.id.cab_select_all -> selectAll() R.id.cab_delete -> askConfirmDelete() } } diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ThreadAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ThreadAdapter.kt index 73086af1..c3e5b44e 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ThreadAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ThreadAdapter.kt @@ -69,7 +69,6 @@ class ThreadAdapter(activity: SimpleActivity, var messages: ArrayList copyToClipboard() R.id.cab_share -> shareText() - R.id.cab_select_all -> selectAll() R.id.cab_delete -> askConfirmDelete() } } diff --git a/app/src/main/res/menu/cab_conversations.xml b/app/src/main/res/menu/cab_conversations.xml index a870e35c..3d73190f 100644 --- a/app/src/main/res/menu/cab_conversations.xml +++ b/app/src/main/res/menu/cab_conversations.xml @@ -20,11 +20,6 @@ android:id="@+id/cab_copy_number" android:title="@string/copy_number_to_clipboard" app:showAsAction="never" /> - - Date: Wed, 4 Nov 2020 10:39:51 +0100 Subject: [PATCH 49/53] allow selecting parts of a message instead of copying the whole --- app/build.gradle | 2 +- .../smsmessenger/adapters/ThreadAdapter.kt | 10 +++++++++ .../smsmessenger/dialogs/SelectTextDialog.kt | 22 +++++++++++++++++++ .../main/res/layout/dialog_select_text.xml | 12 ++++++++++ app/src/main/res/menu/cab_thread.xml | 4 ++++ 5 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 app/src/main/kotlin/com/simplemobiletools/smsmessenger/dialogs/SelectTextDialog.kt create mode 100644 app/src/main/res/layout/dialog_select_text.xml diff --git a/app/build.gradle b/app/build.gradle index 69ff5e04..2a801344 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -56,7 +56,7 @@ android { } dependencies { - implementation 'com.simplemobiletools:commons:5.31.22' + implementation 'com.simplemobiletools:commons:5.31.23' implementation 'org.greenrobot:eventbus:3.2.0' implementation 'com.klinkerapps:android-smsmms:5.2.6' implementation 'com.github.tibbi:IndicatorFastScroll:08f512858a' diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ThreadAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ThreadAdapter.kt index c3e5b44e..bd2b57d4 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ThreadAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ThreadAdapter.kt @@ -29,6 +29,7 @@ import com.simplemobiletools.commons.views.FastScroller import com.simplemobiletools.commons.views.MyRecyclerView import com.simplemobiletools.smsmessenger.R import com.simplemobiletools.smsmessenger.activities.SimpleActivity +import com.simplemobiletools.smsmessenger.dialogs.SelectTextDialog import com.simplemobiletools.smsmessenger.extensions.deleteMessage import com.simplemobiletools.smsmessenger.helpers.* import com.simplemobiletools.smsmessenger.models.* @@ -58,6 +59,7 @@ class ThreadAdapter(activity: SimpleActivity, var messages: ArrayList copyToClipboard() R.id.cab_share -> shareText() + R.id.cab_select_text -> selectText() R.id.cab_delete -> askConfirmDelete() } } @@ -131,6 +134,13 @@ class ThreadAdapter(activity: SimpleActivity, var messages: ArrayList { } } + .create().apply { + activity.setupDialogStuff(view, this) + } + } +} diff --git a/app/src/main/res/layout/dialog_select_text.xml b/app/src/main/res/layout/dialog_select_text.xml new file mode 100644 index 00000000..71f9cba7 --- /dev/null +++ b/app/src/main/res/layout/dialog_select_text.xml @@ -0,0 +1,12 @@ + + diff --git a/app/src/main/res/menu/cab_thread.xml b/app/src/main/res/menu/cab_thread.xml index 9c005319..e78aef8f 100644 --- a/app/src/main/res/menu/cab_thread.xml +++ b/app/src/main/res/menu/cab_thread.xml @@ -11,6 +11,10 @@ android:icon="@drawable/ic_share_vector" android:title="@string/share" app:showAsAction="ifRoom" /> + Date: Wed, 4 Nov 2020 12:36:02 +0100 Subject: [PATCH 50/53] add an option for showing character counter at sending messages --- .../activities/SettingsActivity.kt | 9 ++++++ .../smsmessenger/activities/ThreadActivity.kt | 2 ++ .../smsmessenger/helpers/Config.kt | 4 +++ .../smsmessenger/helpers/Constants.kt | 1 + app/src/main/res/layout/activity_settings.xml | 23 ++++++++++++++ app/src/main/res/layout/activity_thread.xml | 31 ++++++++++++++++--- 6 files changed, 65 insertions(+), 5 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/SettingsActivity.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/SettingsActivity.kt index c9a3d38d..680c3422 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/SettingsActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/SettingsActivity.kt @@ -34,6 +34,7 @@ class SettingsActivity : SimpleActivity() { setupManageBlockedNumbers() setupChangeDateTimeFormat() setupFontSize() + setupShowCharacterCounter() updateTextColors(settings_scrollview) if (blockedNumbersAtPause != -1 && blockedNumbersAtPause != getBlockedNumbers().hashCode()) { @@ -106,4 +107,12 @@ class SettingsActivity : SimpleActivity() { } } } + + private fun setupShowCharacterCounter() { + settings_show_character_counter.isChecked = config.showCharacterCounter + settings_show_character_counter_holder.setOnClickListener { + settings_show_character_counter.toggle() + config.showCharacterCounter = settings_show_character_counter.isChecked + } + } } diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt index 6dc53da3..93034cfe 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt @@ -263,6 +263,7 @@ class ThreadActivity : SimpleActivity() { thread_send_message.applyColorFilter(textColor) confirm_manage_contacts.applyColorFilter(textColor) thread_add_attachment.applyColorFilter(textColor) + thread_character_counter.beVisibleIf(config.showCharacterCounter) thread_send_message.setOnClickListener { sendMessage() @@ -271,6 +272,7 @@ class ThreadActivity : SimpleActivity() { thread_send_message.isClickable = false thread_type_message.onTextChangeListener { checkSendMessageAvailability() + thread_character_counter.text = it.length.toString() } confirm_manage_contacts.setOnClickListener { diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/Config.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/Config.kt index c5e95e68..451fe60f 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/Config.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/Config.kt @@ -13,4 +13,8 @@ class Config(context: Context) : BaseConfig(context) { } fun getUseSIMIdAtNumber(number: String) = prefs.getInt(USE_SIM_ID_PREFIX + number, 0) + + var showCharacterCounter: Boolean + get() = prefs.getBoolean(SHOW_CHARACTER_COUNTER, false) + set(showCharacterCounter) = prefs.edit().putBoolean(SHOW_CHARACTER_COUNTER, showCharacterCounter).apply() } diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/Constants.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/Constants.kt index d98055db..d4190f1a 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/Constants.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/Constants.kt @@ -11,6 +11,7 @@ const val THREAD_ATTACHMENT_URI = "thread_attachment_uri" const val THREAD_ATTACHMENT_URIS = "thread_attachment_uris" const val USE_SIM_ID_PREFIX = "use_sim_id_" const val NOTIFICATION_CHANNEL = "simple_sms_messenger" +const val SHOW_CHARACTER_COUNTER = "show_character_counter" private const val PATH = "com.simplemobiletools.smsmessenger.action." const val MARK_AS_READ = PATH + "mark_as_read" diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/activity_settings.xml index 618b9b70..c71368f9 100644 --- a/app/src/main/res/layout/activity_settings.xml +++ b/app/src/main/res/layout/activity_settings.xml @@ -149,5 +149,28 @@ android:clickable="false" /> + + + + + + diff --git a/app/src/main/res/layout/activity_thread.xml b/app/src/main/res/layout/activity_thread.xml index 33ec03ed..240c0c39 100644 --- a/app/src/main/res/layout/activity_thread.xml +++ b/app/src/main/res/layout/activity_thread.xml @@ -66,6 +66,7 @@ android:layout_marginStart="@dimen/medium_margin" android:layout_marginEnd="@dimen/medium_margin" android:background="?selectableItemBackgroundBorderless" + android:contentDescription="@string/confirm_selection" android:paddingStart="@dimen/medium_margin" android:paddingEnd="@dimen/medium_margin" android:src="@drawable/ic_check_vector" @@ -125,6 +126,7 @@ android:layout_marginEnd="@dimen/small_margin" android:alpha="0.9" android:background="?selectableItemBackgroundBorderless" + android:contentDescription="@string/attachment" android:padding="@dimen/normal_margin" android:src="@drawable/ic_plus_vector" /> @@ -166,14 +168,17 @@ @@ -190,6 +195,21 @@ android:visibility="gone" tools:text="1" /> + + From d49eaa4abec5e61069ff7fb923c54e86aff94f80 Mon Sep 17 00:00:00 2001 From: tibbi Date: Wed, 4 Nov 2020 12:53:24 +0100 Subject: [PATCH 51/53] applying the selected text size on a couple places --- .../smsmessenger/activities/ThreadActivity.kt | 6 +++++- .../smsmessenger/adapters/ThreadAdapter.kt | 8 +++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt index 93034cfe..220694fc 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt @@ -11,6 +11,7 @@ import android.os.Bundle import android.provider.Telephony import android.telephony.SubscriptionManager import android.text.TextUtils +import android.util.TypedValue import android.view.* import android.view.inputmethod.EditorInfo import android.widget.LinearLayout @@ -263,8 +264,11 @@ class ThreadActivity : SimpleActivity() { thread_send_message.applyColorFilter(textColor) confirm_manage_contacts.applyColorFilter(textColor) thread_add_attachment.applyColorFilter(textColor) - thread_character_counter.beVisibleIf(config.showCharacterCounter) + thread_character_counter.beVisibleIf(config.showCharacterCounter) + thread_character_counter.setTextSize(TypedValue.COMPLEX_UNIT_PX, getTextSize()) + + thread_type_message.setTextSize(TypedValue.COMPLEX_UNIT_PX, getTextSize()) thread_send_message.setOnClickListener { sendMessage() } diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ThreadAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ThreadAdapter.kt index bd2b57d4..dfef567b 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ThreadAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ThreadAdapter.kt @@ -38,6 +38,7 @@ import kotlinx.android.synthetic.main.item_received_message.view.* import kotlinx.android.synthetic.main.item_received_unknown_attachment.view.* import kotlinx.android.synthetic.main.item_sent_unknown_attachment.view.* import kotlinx.android.synthetic.main.item_thread_date_time.view.* +import kotlinx.android.synthetic.main.item_thread_error.view.* import kotlinx.android.synthetic.main.item_thread_success.view.* class ThreadAdapter(activity: SimpleActivity, var messages: ArrayList, recyclerView: MyRecyclerView, fastScroller: FastScroller, @@ -105,7 +106,8 @@ class ThreadAdapter(activity: SimpleActivity, var messages: ArrayList setupDateTime(itemView, item) is ThreadSuccess -> setupThreadSuccess(itemView) - !is ThreadError -> setupView(itemView, item as Message) + is ThreadError -> setupThreadError(itemView) + else -> setupView(itemView, item as Message) } } bindViewHolder(holder) @@ -322,4 +324,8 @@ class ThreadAdapter(activity: SimpleActivity, var messages: ArrayList Date: Wed, 4 Nov 2020 12:57:06 +0100 Subject: [PATCH 52/53] update version to 5.5.0 --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 2a801344..420817fd 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -16,8 +16,8 @@ android { applicationId "com.simplemobiletools.smsmessenger" minSdkVersion 22 targetSdkVersion 30 - versionCode 17 - versionName "5.4.5" + versionCode 18 + versionName "5.5.0" setProperty("archivesBaseName", "sms-messenger") } From 0a6be93eb4bf15723141a52bb58716e442c4faef Mon Sep 17 00:00:00 2001 From: tibbi Date: Wed, 4 Nov 2020 12:57:13 +0100 Subject: [PATCH 53/53] updating changelog --- CHANGELOG.md | 8 ++++++++ fastlane/metadata/android/en-US/changelogs/18.txt | 4 ++++ 2 files changed, 12 insertions(+) create mode 100644 fastlane/metadata/android/en-US/changelogs/18.txt diff --git a/CHANGELOG.md b/CHANGELOG.md index 0464d3f2..cda2ade2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,14 @@ Changelog ========== +Version 5.5.0 *(2020-11-04)* +---------------------------- + + * Allow dialing or copying selected conversation phone numbers + * Allow copying specific parts of messages into clipboard + * Adding an option to show character counter at outgoing messages + * Couple other UI, translation and stability improvements + Version 5.4.5 *(2020-10-27)* ---------------------------- diff --git a/fastlane/metadata/android/en-US/changelogs/18.txt b/fastlane/metadata/android/en-US/changelogs/18.txt new file mode 100644 index 00000000..986a4467 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/18.txt @@ -0,0 +1,4 @@ + * Allow dialing or copying selected conversation phone numbers + * Allow copying specific parts of messages into clipboard + * Adding an option to show character counter at outgoing messages + * Couple other UI, translation and stability improvements