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

标签 kotlin sms

我正在尝试构建一个应用程序,用户可以在该应用程序中单击提交按钮,该按钮会将他们输入的内容通过 SMS 发送到预定义的号码。作为 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")

截图:

关于Kotlin 代码在不使用默认应用程序的情况下从应用程序内发送短信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64036385/

相关文章:

android - 从不同线程 Android 更新 View

java - 用于两个数据库连接的通用 spring 数据存储库

android - 使用Gson时,TID 12680中的致命信号11(SIGSEGV),代码128,故障加法器0x0

android - Jetpack 撰写 : can't change TextField focus

kotlin - 在 IntelliJ IDEA 中导入 kotlinx 是不可能的

c# - 从 C# 连接到电话的 SMS 并获得响应

android - 如何在双卡手机中使用 SMSmanager 发送短信?

Android Studio : unresolved reference for java and javax imports, 但项目编译

android - 发送没有送达报告的短信

android - 如何获取草稿短信的地址