Kotlin 代码在不使用默认应用程序的情况下从应用程序内发送短信

Kotlin code Send SMS from within App without using default app

我正在尝试构建一个应用程序,用户可以在该应用程序中单击提交按钮,该按钮会将他们输入的内容通过短信发送到预定义的号码。作为 Kotlin 的新手,我得到了通过 SMS 发送数据的代码的帮助,但是它打开了默认的消息传递应用程序,用户必须与消息传递应用程序交互,然后导航回我的应用程序。我希望这在后台发生并直接从我的应用程序发送。代码如下...非常感谢任何帮助,非常感谢

class SecondActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_second)


val backbut = findViewById<Button>(R.id.backbut)
backbut.setOnClickListener {
val intent = Intent(this, MainActivity::class.java)
startActivity(intent)

}

var spinner: Spinner? = null
spinner = this.spinner


val sub1: Button = findViewById<Button>(R.id.sub1)
sub1.setOnClickListener {
val cust: String = cust.text.toString()
val reg: String = reg.text.toString()
val pal: String = pal.text.toString()
val cont:String = cont.text.toString()
val data: String =
"CUSTOMER : ".plus(cust).plus("\n").plus("CONTAINER : ").plus(cont).plus("\n").plus("VEH 
REG : ").plus(reg).plus("\n").plus("PALLETS : ")
.plus(pal)
startActivity(getSendSmsIntent("1234567", data))

}
}
// textview_selected!!.text = "Selected : "+ Spinner [position]


private fun getSendSmsIntent(phoneNumber: String, content: String?): Intent? {

val uri = Uri.parse("smsto:$phoneNumber")
val intent = Intent(Intent.ACTION_SENDTO, uri)

intent.putExtra("sms_body", content)

return getIntent(intent, true)
}
private fun getIntent(intent: Intent, isNewTask: Boolean): Intent? {
return if (isNewTask) intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) else intent

}

}

阅读完documentation后,我认为您可以使用以下代码实现您的需求:

private fun sendSMS(phoneNumber: String, message: String) {
        val sentPI: PendingIntent = PendingIntent.getBroadcast(this, 0, Intent("SMS_SENT"), 0)
        SmsManager.getDefault().sendTextMessage(phoneNumber, null, message, sentPI, null)
    }

将此权限添加到您的 AndroidManifest 并确保它已被授予:

 <uses-permission android:name="android.permission.SEND_SMS" />

调用sendSMS方法如下:

 sendSMS("+2126000000", "Some text here")

截图: