Android enviar SMS automáticamente al hacer clic en el botón

Estoy intentando enviar automáticamente el mensaje de SMS a cierto número cuando el usuario presiona un botón en la pantalla.

Este es mi código:

Intent smsIntent = new Intent(Intent.ACTION_SENDTO, Uri.parse("sms:xxxxxxxxxxx")); smsIntent.putExtra("sms_body", "Hello"); startActivity(smsIntent); 

Xxxxxxx = número de teléfono

Tengo los siguientes permisos:

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

Cuando presiono el botón me lleva a otra pantalla donde puedo editar mi texto y presionar Enviar. Sólo quiero que haga este proceso automáticamente sin llevarme a otra pantalla. Como ya he definido mi mensaje, sólo quiero enviarlo a un número determinado.

Y también no estoy seguro de si pongo el número de teléfono corrent en la segunda línea de código. ¿Tengo que poner mi código de país allí primero o puedo simplemente poner mi número de teléfono móvil y funcionará?

Gracias

Pruebe este código:

  String messageToSend = "this is a message"; String number = "2121234567"; SmsManager.getDefault().sendTextMessage(number, null, messageToSend, null,null); 

Con respecto al número, debe ingresar el número como si lo estuviera llamando desde el teléfono o enviando un mensaje sms de la manera normal.

Puede utilizar la construcción en Intent también:

  buttonSendSms_intent.setOnClickListener(new Button.OnClickListener(){ @Override public void onClick(View arg0) { // TODO Auto-generated method stub String smsNumber = edittextSmsNumber.getText().toString(); String smsText = edittextSmsText.getText().toString(); Uri uri = Uri.parse("smsto:" + smsNumber); Intent intent = new Intent(Intent.ACTION_SENDTO, uri); intent.putExtra("sms_body", smsText); startActivity(intent); }}); 

Prueba esto

 private static final String SMS_SENT_INTENT_FILTER = "com.yourapp.sms_send"; private static final String SMS_DELIVERED_INTENT_FILTER = "com.yourapp.sms_delivered"; String message = "hey, this is my message"; String phnNo = " " //preferable use complete international number PendingIntent sentPI = PendingIntent.getBroadcast(this, 0, new Intent( SMS_SENT_INTENT_FILTER), 0); PendingIntent deliveredPI = PendingIntent.getBroadcast(this, 0, new Intent( SMS_DELIVERED_INTENT_FILTER), 0); SmsManager sms = SmsManager.getDefault(); sms.sendTextMessage(phnNo, null, message, sentPI, deliveredPI); 

La manera fácil es utilizar SmsManager.Telephony.

  • SMS enviados / entregados: ¿cómo identificas a qué SMS pertenece la emisión?
  • Registrar BroadcastReceiver para SMS entrantes
  • SMSManager está desactivado
  • ¿Cómo pasar el texto a Google Voice SMS mediante programación?
  • Cómo acceder a la bandeja de entrada de sms desde javascript en android (phonegap)
  • Android: ¿Cómo enviar mensajes mediante programación mediante whatsapp, ¿Conversamos?
  • IPhone o Android que utilizan la autenticación basada en SMS?
  • Obtener múltiples transmisiones de intenciones?
  • ContentObserver en el contenido: // sms / in 1.6+?
  • Content: // sms / enviado / no funciona
  • ¿Cómo puede enviar sms en android en doble SIM?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.