GOOGLE ADS

miércoles, 13 de abril de 2022

Código Kotlin Enviar SMS desde la aplicación sin usar la aplicación predeterminada

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

Regla de Firestore para acceder a la generación de subcolección Permisos faltantes o insuficientes

Tengo problemas con las reglas de Firestore para permitir el acceso a algunos recursos en una subcolección. Tengo algunos requests document...