add handling for storing sent messages
This commit is contained in:
parent
420a88c74c
commit
e1f1583b17
|
@ -111,6 +111,8 @@
|
|||
</intent-filter>
|
||||
</receiver>
|
||||
|
||||
<receiver android:name=".receivers.SmsSentReceiver"/>
|
||||
|
||||
<activity-alias
|
||||
android:name=".activities.SplashActivity.Red"
|
||||
android:enabled="false"
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
package com.simplemobiletools.smsmessenger.activities
|
||||
|
||||
import android.app.PendingIntent
|
||||
import android.content.Intent
|
||||
import android.os.Bundle
|
||||
import android.provider.Telephony
|
||||
import android.telephony.SmsManager
|
||||
|
@ -12,13 +14,12 @@ import com.simplemobiletools.smsmessenger.adapters.ThreadAdapter
|
|||
import com.simplemobiletools.smsmessenger.extensions.config
|
||||
import com.simplemobiletools.smsmessenger.extensions.getMessages
|
||||
import com.simplemobiletools.smsmessenger.extensions.markSMSRead
|
||||
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.*
|
||||
import com.simplemobiletools.smsmessenger.models.Events
|
||||
import com.simplemobiletools.smsmessenger.models.ThreadDateTime
|
||||
import com.simplemobiletools.smsmessenger.models.ThreadError
|
||||
import com.simplemobiletools.smsmessenger.models.ThreadItem
|
||||
import com.simplemobiletools.smsmessenger.receivers.SmsSentReceiver
|
||||
import kotlinx.android.synthetic.main.activity_thread.*
|
||||
import org.greenrobot.eventbus.EventBus
|
||||
import org.greenrobot.eventbus.Subscribe
|
||||
|
@ -60,6 +61,7 @@ class ThreadActivity : SimpleActivity() {
|
|||
}
|
||||
|
||||
private fun setupButtons() {
|
||||
val threadId = intent.getIntExtra(THREAD_ID, 0)
|
||||
thread_type_message.setColors(config.textColor, config.primaryColor, config.backgroundColor)
|
||||
thread_send_message.applyColorFilter(config.textColor)
|
||||
|
||||
|
@ -69,8 +71,15 @@ class ThreadActivity : SimpleActivity() {
|
|||
return@setOnClickListener
|
||||
}
|
||||
|
||||
val intent = Intent(this, SmsSentReceiver::class.java).apply {
|
||||
putExtra(MESSAGE_BODY, msg)
|
||||
putExtra(MESSAGE_ADDRESS, targetNumber)
|
||||
}
|
||||
|
||||
val pendingIntent = PendingIntent.getBroadcast(this, threadId, intent, PendingIntent.FLAG_UPDATE_CURRENT)
|
||||
val smsManager = SmsManager.getDefault()
|
||||
smsManager.sendTextMessage(targetNumber, null, msg, null, null)
|
||||
smsManager.sendTextMessage(targetNumber, null, msg, pendingIntent, null)
|
||||
thread_type_message.setText("")
|
||||
}
|
||||
|
||||
thread_send_message.isClickable = false
|
||||
|
|
|
@ -162,16 +162,16 @@ fun Context.getNameFromPhoneNumber(number: String): Int? {
|
|||
return null
|
||||
}
|
||||
|
||||
fun Context.insertNewSMS(address: String, subject: String, body: String, date: Long, threadId: Long) {
|
||||
fun Context.insertNewSMS(address: String, subject: String, body: String, date: Long, read: Int, threadId: Long, type: Int) {
|
||||
val uri = Telephony.Sms.CONTENT_URI
|
||||
val contentValues = ContentValues().apply {
|
||||
put(Telephony.Sms.ADDRESS, address)
|
||||
put(Telephony.Sms.SUBJECT, subject)
|
||||
put(Telephony.Sms.BODY, body)
|
||||
put(Telephony.Sms.DATE, date)
|
||||
put(Telephony.Sms.READ, 0)
|
||||
put(Telephony.Sms.READ, read)
|
||||
put(Telephony.Sms.THREAD_ID, threadId)
|
||||
put(Telephony.Sms.TYPE, Telephony.Sms.MESSAGE_TYPE_INBOX)
|
||||
put(Telephony.Sms.TYPE, type)
|
||||
}
|
||||
|
||||
contentResolver.insert(uri, contentValues)
|
||||
|
|
|
@ -13,6 +13,10 @@ const val THREAD_RECEIVED_MESSAGE = 2
|
|||
const val THREAD_SENT_MESSAGE = 3
|
||||
const val THREAD_SENT_MESSAGE_ERROR = 4
|
||||
|
||||
// constants used at passing info to SmsSentReceiver
|
||||
const val MESSAGE_BODY = "message_body"
|
||||
const val MESSAGE_ADDRESS = "message_address"
|
||||
|
||||
fun refreshMessages() {
|
||||
EventBus.getDefault().post(Events.RefreshMessages())
|
||||
}
|
||||
|
|
|
@ -38,7 +38,9 @@ class SmsReceiver : BroadcastReceiver() {
|
|||
val body = it.messageBody
|
||||
val date = it.timestampMillis
|
||||
val threadId = context.getThreadId(address)
|
||||
context.insertNewSMS(address, subject, body, date, threadId)
|
||||
val type = Telephony.Sms.MESSAGE_TYPE_INBOX
|
||||
val read = 0
|
||||
context.insertNewSMS(address, subject, body, date, read, threadId, type)
|
||||
showNotification(context, address, body, threadId.toInt())
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,34 @@
|
|||
package com.simplemobiletools.smsmessenger.receivers
|
||||
|
||||
import android.app.Activity
|
||||
import android.content.BroadcastReceiver
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.provider.Telephony
|
||||
import com.simplemobiletools.smsmessenger.extensions.getThreadId
|
||||
import com.simplemobiletools.smsmessenger.extensions.insertNewSMS
|
||||
import com.simplemobiletools.smsmessenger.helpers.MESSAGE_ADDRESS
|
||||
import com.simplemobiletools.smsmessenger.helpers.MESSAGE_BODY
|
||||
import com.simplemobiletools.smsmessenger.helpers.refreshMessages
|
||||
|
||||
class SmsSentReceiver : BroadcastReceiver() {
|
||||
override fun onReceive(context: Context, intent: Intent) {
|
||||
val extras = intent.extras
|
||||
if (extras != null) {
|
||||
val address = extras.getString(MESSAGE_ADDRESS) ?: ""
|
||||
val subject = ""
|
||||
val body = extras.getString(MESSAGE_BODY) ?: ""
|
||||
val date = System.currentTimeMillis()
|
||||
val threadId = context.getThreadId(address)
|
||||
val type = if (resultCode == Activity.RESULT_OK) {
|
||||
Telephony.Sms.MESSAGE_TYPE_SENT
|
||||
} else {
|
||||
Telephony.Sms.MESSAGE_TYPE_FAILED
|
||||
}
|
||||
val read = 1
|
||||
context.insertNewSMS(address, subject, body, date, read, threadId, type)
|
||||
}
|
||||
|
||||
refreshMessages()
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue