mirror of
https://github.com/SimpleMobileTools/Simple-SMS-Messenger.git
synced 2025-06-05 21:49:22 +02:00
pass only the ThreadId to ThreadActivity, fetch other data
This commit is contained in:
@@ -19,8 +19,6 @@ import com.simplemobiletools.smsmessenger.adapters.MessagesAdapter
|
|||||||
import com.simplemobiletools.smsmessenger.extensions.config
|
import com.simplemobiletools.smsmessenger.extensions.config
|
||||||
import com.simplemobiletools.smsmessenger.extensions.getMessages
|
import com.simplemobiletools.smsmessenger.extensions.getMessages
|
||||||
import com.simplemobiletools.smsmessenger.helpers.THREAD_ID
|
import com.simplemobiletools.smsmessenger.helpers.THREAD_ID
|
||||||
import com.simplemobiletools.smsmessenger.helpers.THREAD_NAME
|
|
||||||
import com.simplemobiletools.smsmessenger.helpers.THREAD_NUMBER
|
|
||||||
import com.simplemobiletools.smsmessenger.models.Events
|
import com.simplemobiletools.smsmessenger.models.Events
|
||||||
import com.simplemobiletools.smsmessenger.models.Message
|
import com.simplemobiletools.smsmessenger.models.Message
|
||||||
import kotlinx.android.synthetic.main.activity_main.*
|
import kotlinx.android.synthetic.main.activity_main.*
|
||||||
@@ -140,8 +138,6 @@ class MainActivity : SimpleActivity() {
|
|||||||
MessagesAdapter(this, messages, messages_list, messages_fastscroller) {
|
MessagesAdapter(this, messages, messages_list, messages_fastscroller) {
|
||||||
Intent(this, ThreadActivity::class.java).apply {
|
Intent(this, ThreadActivity::class.java).apply {
|
||||||
putExtra(THREAD_ID, (it as Message).thread)
|
putExtra(THREAD_ID, (it as Message).thread)
|
||||||
putExtra(THREAD_NAME, it.senderName)
|
|
||||||
putExtra(THREAD_NUMBER, it.senderNumber)
|
|
||||||
startActivity(this)
|
startActivity(this)
|
||||||
}
|
}
|
||||||
}.apply {
|
}.apply {
|
||||||
|
@@ -5,15 +5,15 @@ import android.content.Intent
|
|||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.provider.Telephony
|
import android.provider.Telephony
|
||||||
import android.telephony.SmsManager
|
import android.telephony.SmsManager
|
||||||
|
import android.util.Log
|
||||||
import com.simplemobiletools.commons.extensions.applyColorFilter
|
import com.simplemobiletools.commons.extensions.applyColorFilter
|
||||||
import com.simplemobiletools.commons.extensions.onTextChangeListener
|
import com.simplemobiletools.commons.extensions.onTextChangeListener
|
||||||
|
import com.simplemobiletools.commons.extensions.toast
|
||||||
import com.simplemobiletools.commons.extensions.value
|
import com.simplemobiletools.commons.extensions.value
|
||||||
import com.simplemobiletools.commons.helpers.ensureBackgroundThread
|
import com.simplemobiletools.commons.helpers.ensureBackgroundThread
|
||||||
import com.simplemobiletools.smsmessenger.R
|
import com.simplemobiletools.smsmessenger.R
|
||||||
import com.simplemobiletools.smsmessenger.adapters.ThreadAdapter
|
import com.simplemobiletools.smsmessenger.adapters.ThreadAdapter
|
||||||
import com.simplemobiletools.smsmessenger.extensions.config
|
import com.simplemobiletools.smsmessenger.extensions.*
|
||||||
import com.simplemobiletools.smsmessenger.extensions.getMessages
|
|
||||||
import com.simplemobiletools.smsmessenger.extensions.markSMSRead
|
|
||||||
import com.simplemobiletools.smsmessenger.helpers.*
|
import com.simplemobiletools.smsmessenger.helpers.*
|
||||||
import com.simplemobiletools.smsmessenger.models.Events
|
import com.simplemobiletools.smsmessenger.models.Events
|
||||||
import com.simplemobiletools.smsmessenger.models.ThreadDateTime
|
import com.simplemobiletools.smsmessenger.models.ThreadDateTime
|
||||||
@@ -29,13 +29,23 @@ class ThreadActivity : SimpleActivity() {
|
|||||||
private val MIN_DATE_TIME_DIFF_SECS = 300
|
private val MIN_DATE_TIME_DIFF_SECS = 300
|
||||||
|
|
||||||
private var targetNumber = ""
|
private var targetNumber = ""
|
||||||
|
private var threadId = 0
|
||||||
private var bus: EventBus? = null
|
private var bus: EventBus? = null
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
setContentView(R.layout.activity_thread)
|
setContentView(R.layout.activity_thread)
|
||||||
title = intent.getStringExtra(THREAD_NAME) ?: getString(R.string.app_launcher_name)
|
|
||||||
targetNumber = intent.getStringExtra(THREAD_NUMBER)!!
|
threadId = intent.getIntExtra(THREAD_ID, 0)
|
||||||
|
val thread = getThreadInfo(threadId)
|
||||||
|
if (thread == null) {
|
||||||
|
toast(R.string.unknown_error_occurred)
|
||||||
|
finish()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
title = thread.title
|
||||||
|
targetNumber = thread.address
|
||||||
bus = EventBus.getDefault()
|
bus = EventBus.getDefault()
|
||||||
bus!!.register(this)
|
bus!!.register(this)
|
||||||
|
|
||||||
@@ -61,7 +71,6 @@ class ThreadActivity : SimpleActivity() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun setupButtons() {
|
private fun setupButtons() {
|
||||||
val threadId = intent.getIntExtra(THREAD_ID, 0)
|
|
||||||
thread_type_message.setColors(config.textColor, config.primaryColor, config.backgroundColor)
|
thread_type_message.setColors(config.textColor, config.primaryColor, config.backgroundColor)
|
||||||
thread_send_message.applyColorFilter(config.textColor)
|
thread_send_message.applyColorFilter(config.textColor)
|
||||||
|
|
||||||
|
@@ -13,6 +13,7 @@ import com.simplemobiletools.commons.helpers.PERMISSION_READ_CONTACTS
|
|||||||
import com.simplemobiletools.commons.helpers.isMarshmallowPlus
|
import com.simplemobiletools.commons.helpers.isMarshmallowPlus
|
||||||
import com.simplemobiletools.smsmessenger.helpers.Config
|
import com.simplemobiletools.smsmessenger.helpers.Config
|
||||||
import com.simplemobiletools.smsmessenger.models.Message
|
import com.simplemobiletools.smsmessenger.models.Message
|
||||||
|
import com.simplemobiletools.smsmessenger.models.MessagingThread
|
||||||
|
|
||||||
val Context.config: Config get() = Config.newInstance(applicationContext)
|
val Context.config: Config get() = Config.newInstance(applicationContext)
|
||||||
|
|
||||||
@@ -83,6 +84,41 @@ fun Context.getMessages(threadID: Int? = null): ArrayList<Message> {
|
|||||||
return messages
|
return messages
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun Context.getThreadInfo(id: Int): MessagingThread? {
|
||||||
|
val uri = Telephony.Sms.CONTENT_URI
|
||||||
|
val projection = arrayOf(
|
||||||
|
Telephony.Sms._ID,
|
||||||
|
Telephony.Sms.ADDRESS,
|
||||||
|
Telephony.Sms.PERSON
|
||||||
|
)
|
||||||
|
val selection = "${Telephony.Sms.THREAD_ID} = ?"
|
||||||
|
val selectionArgs = arrayOf(id.toString())
|
||||||
|
var cursor: Cursor? = null
|
||||||
|
try {
|
||||||
|
cursor = contentResolver.query(uri, projection, selection, selectionArgs, null)
|
||||||
|
if (cursor?.moveToFirst() == true) {
|
||||||
|
val person = cursor.getIntValue(Telephony.Sms.PERSON)
|
||||||
|
val address = cursor.getStringValue(Telephony.Sms.ADDRESS)
|
||||||
|
var title = address
|
||||||
|
|
||||||
|
if (title != null && person != 0) {
|
||||||
|
title = getPersonsName(person) ?: title
|
||||||
|
} else if (title.areDigitsOnly()) {
|
||||||
|
val contactId = getNameFromPhoneNumber(title)
|
||||||
|
if (contactId != null) {
|
||||||
|
title = getPersonsName(contactId) ?: title
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return MessagingThread(id, title, address)
|
||||||
|
}
|
||||||
|
} catch (e: Exception) {
|
||||||
|
} finally {
|
||||||
|
cursor?.close()
|
||||||
|
}
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
|
||||||
fun Context.getPersonsName(id: Int): String? {
|
fun Context.getPersonsName(id: Int): String? {
|
||||||
val uri = ContactsContract.Data.CONTENT_URI
|
val uri = ContactsContract.Data.CONTENT_URI
|
||||||
val projection = arrayOf(
|
val projection = arrayOf(
|
||||||
|
@@ -0,0 +1,3 @@
|
|||||||
|
package com.simplemobiletools.smsmessenger.models
|
||||||
|
|
||||||
|
data class MessagingThread(val id: Int, val title: String, val address: String)
|
@@ -25,8 +25,6 @@ import com.simplemobiletools.smsmessenger.activities.ThreadActivity
|
|||||||
import com.simplemobiletools.smsmessenger.extensions.getThreadId
|
import com.simplemobiletools.smsmessenger.extensions.getThreadId
|
||||||
import com.simplemobiletools.smsmessenger.extensions.insertNewSMS
|
import com.simplemobiletools.smsmessenger.extensions.insertNewSMS
|
||||||
import com.simplemobiletools.smsmessenger.helpers.THREAD_ID
|
import com.simplemobiletools.smsmessenger.helpers.THREAD_ID
|
||||||
import com.simplemobiletools.smsmessenger.helpers.THREAD_NAME
|
|
||||||
import com.simplemobiletools.smsmessenger.helpers.THREAD_NUMBER
|
|
||||||
import com.simplemobiletools.smsmessenger.helpers.refreshMessages
|
import com.simplemobiletools.smsmessenger.helpers.refreshMessages
|
||||||
|
|
||||||
class SmsReceiver : BroadcastReceiver() {
|
class SmsReceiver : BroadcastReceiver() {
|
||||||
@@ -72,8 +70,6 @@ class SmsReceiver : BroadcastReceiver() {
|
|||||||
|
|
||||||
val intent = Intent(context, ThreadActivity::class.java).apply {
|
val intent = Intent(context, ThreadActivity::class.java).apply {
|
||||||
putExtra(THREAD_ID, threadID)
|
putExtra(THREAD_ID, threadID)
|
||||||
putExtra(THREAD_NAME, address)
|
|
||||||
putExtra(THREAD_NUMBER, address)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
val pendingIntent = PendingIntent.getActivity(context, threadID, intent, PendingIntent.FLAG_UPDATE_CURRENT)
|
val pendingIntent = PendingIntent.getActivity(context, threadID, intent, PendingIntent.FLAG_UPDATE_CURRENT)
|
||||||
|
Reference in New Issue
Block a user