2012-05-15 2 views
6

Sto cercando di inviare automaticamente un messaggio SMS a un certo numero quando l'utente preme un pulsante sullo schermo.Android inviare SMS automaticamente sul pulsante di scatto

Questo è il mio codice:

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

xxxxxxx = numero di telefono

Ho le seguenti autorizzazioni:

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

Quando si preme il pulsante mi ci vuole per un altro schermo dove ho puoi modificare il mio testo e premere Invia. Voglio solo che faccia questo processo automaticamente senza portarmi su un altro schermo. Come ho già definito il mio messaggio, voglio solo inviarlo a un numero particolare.

e anche io non sono sicuro se ho messo il numero di telefono corrent nella seconda riga di codice. Devo inserire prima il mio prefisso internazionale o posso semplicemente inserire il mio numero di telefono e funzionerà?

Grazie

+0

sto facendo qualcosa di simile qui !!! http://stackoverflow.com/questions/14452808/sending-and-receiving-mms-in-android – toobsco42

risposta

17

provare questo codice:

String messageToSend = "this is a message"; 
String number = "2121234567"; 

SmsManager.getDefault().sendTextMessage(number, null, messageToSend, null,null); 

Per quanto riguarda il numero, è necessario inserire il numero come se si stesse chiamando dal telefono cellulare o l'invio di un messaggio SMS nel normale maniera.

+0

Questo ha funzionato perfettamente. Grazie mille! – Alex

+0

Grazie uomo .. mi ha aiutato – Noman

+0

@ Chris Sto usando il codice, ma in grado di ricevere gli sms sul mio no. Qualunque cosa stia inserendo come numero –

2

Prova questa

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

È possibile utilizzare la configurazione in Intent anche:

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

Il problema di questo è che se ci sono più attività in grado di gestire l'azione 'Intent.ACTION_SENDTO', verrà visualizzato un selettore per consentire all'utente di selezionare un app per inviare gli sms da (quindi richiede l'intervento umano in questo caso) . L'OP voleva farlo automaticamente senza l'intervento umano che sto assumendo. – CapturedTree

2

il modo più semplice è quello di utilizzare SmsManager.Telephony.