Estoy tratando de crear una aplicación en la que el usuario haga clic en un botón de envío que enviará el contenido de su entrada por SMS a un número predefinido. Siendo muy nuevo en Kotlin, me ayudaron con el código para enviar los datos por SMS, sin embargo, abre la aplicación de mensajería predeterminada y el usuario tiene que interactuar con la aplicación de mensajería y luego volver a mi aplicación. Lo que me gustaría es que esto suceda en segundo plano y se envíe directamente desde mi aplicación. El código está debajo...Cualquier ayuda muy apreciada, Muchas gracias
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
}
}
Solución del problema
Después de leer la documentación, creo que puede satisfacer sus necesidades utilizando el siguiente código:
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)
}
Agregue este permiso a su AndroidManifest y asegúrese de que esté otorgado:
<uses-permission android:name="android.permission.SEND_SMS" />
Llame al método sendSMS de la siguiente manera:
sendSMS("+2126000000", "Some text here")
Captura de pantalla:

No hay comentarios:
Publicar un comentario