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