2012-05-15 12 views
6

Estoy tratando de enviar automáticamente mensajes SMS a un determinado número cuando el usuario presiona un botón en la pantalla.Android enviar SMS automáticamente al hacer clic en el botón

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> 

Al pulsar el botón que me lleva a otra pantalla donde puedo editar mi texto y presiono Enviar. Solo quiero que haga este proceso automáticamente sin llevarme a otra pantalla. Como ya he definido mi mensaje, solo quiero enviarlo a un número en particular.

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

Gracias

+0

¡¡¡Estoy haciendo algo similar AQUÍ !!! http://stackoverflow.com/questions/14452808/sending-and-receiving-mms-in-android – toobsco42

Respuesta

17

probar 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, es necesario introducir el número como si estuviera llamando desde el teléfono o el envío de un mensaje SMS en el normales manera.

+0

Esto funcionó perfectamente. Muchas gracias! – Alex

+0

Gracias amigo ... me ayudó – Noman

+0

@chris Estoy usando su código pero no puedo recibir sms en mi no. lo que sea que esté poniendo como número –

2

probar este

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); 
3

Puede utilizar la estructura en Intención 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); 
     }}); 
+0

El problema con esto es que si hay varias actividades capaces de manejar la acción 'Intent.ACTION_SENDTO', se mostrará un selector para permitir al usuario seleccionar una aplicación para enviar el sms (por lo tanto, se requiere la intervención humana en ese caso) . OP quería hacerlo automáticamente sin la intervención humana, estoy asumiendo. – CapturedTree

2

el camino más fácil es utilizar SmsManager.Telephony.

Cuestiones relacionadas