42 lines
1.7 KiB
Kotlin
42 lines
1.7 KiB
Kotlin
package com.simplemobiletools.smsmessenger.services
|
|
|
|
import android.app.Service
|
|
import android.content.Intent
|
|
import android.net.Uri
|
|
import com.klinker.android.send_message.Settings
|
|
import com.klinker.android.send_message.Transaction
|
|
import com.simplemobiletools.smsmessenger.extensions.getThreadId
|
|
import com.simplemobiletools.smsmessenger.receivers.SmsStatusDeliveredReceiver
|
|
import com.simplemobiletools.smsmessenger.receivers.SmsStatusSentReceiver
|
|
|
|
class HeadlessSmsSendService : Service() {
|
|
override fun onBind(intent: Intent?) = null
|
|
|
|
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
|
|
try {
|
|
if (intent == null) {
|
|
return START_NOT_STICKY
|
|
}
|
|
|
|
val number = Uri.decode(intent.dataString!!.removePrefix("sms:").removePrefix("smsto:").removePrefix("mms").removePrefix("mmsto:").trim())
|
|
val text = intent.getStringExtra(Intent.EXTRA_TEXT)
|
|
val settings = Settings()
|
|
settings.useSystemSending = true
|
|
settings.deliveryReports = true
|
|
|
|
val transaction = Transaction(this, settings)
|
|
val message = com.klinker.android.send_message.Message(text, number)
|
|
|
|
val smsSentIntent = Intent(this, SmsStatusSentReceiver::class.java)
|
|
val deliveredIntent = Intent(this, SmsStatusDeliveredReceiver::class.java)
|
|
|
|
transaction.setExplicitBroadcastForSentSms(smsSentIntent)
|
|
transaction.setExplicitBroadcastForDeliveredSms(deliveredIntent)
|
|
|
|
transaction.sendNewMessage(message, getThreadId(number))
|
|
} catch (ignored: Exception) {
|
|
}
|
|
|
|
return super.onStartCommand(intent, flags, startId)
|
|
}
|
|
}
|