package com.rakesh.simpleSms; import com.rakesh.broadcastreceiver.DeliverSMSBroadcastReceiver; import com.rakesh.broadcastreceiver.OutgoingSMSBroadcastReceiver; import android.app.Activity; import android.app.PendingIntent; import android.content.BroadcastReceiver; import android.content.Intent; import android.content.IntentFilter; import android.os.Bundle; import android.telephony.SmsManager; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class SimpleSMSAppActivity extends Activity { //This application sends two identical message. Issue can be fixed by method mention in following link. //http://stackoverflow.com/questions/9706039/android-sendtextmessage-sends-two-identical-messages-on-exceution-how-to-fix //private Button btSendMessage; private EditText etNumber; private EditText etMessage; private SmsManager manager; public static final int MAX_MESSAGE_SIZE = 160; public static final String SMS_SENT = "SMS_SENT"; public static final String SMS_DELIVERED = "SMS_DELIVERED"; private final BroadcastReceiver outgoingSMSBR = new OutgoingSMSBroadcastReceiver(); private final BroadcastReceiver deliverSMSBR = new DeliverSMSBroadcastReceiver(); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // btSendMessage = (Button)findViewById(R.id.btSendMessage); etNumber = (EditText)findViewById(R.id.etNumber); etMessage = (EditText)findViewById(R.id.etMessage); manager = SmsManager.getDefault(); } public void sendMessage(View view){ String number = etNumber.getText().toString(); String message = etMessage.getText().toString(); Log.d("RK","number : "+number+", message : " + message ); if(!isNullOrEmpty(number) && !isNullOrEmpty(message)){ if(message.length() > MAX_MESSAGE_SIZE){ Toast.makeText(this,"Message is longer then allowed in SMS",Toast.LENGTH_LONG).show(); } else{ PendingIntent piSend = PendingIntent.getBroadcast(this, 0, new Intent(SMS_SENT),0); PendingIntent piDelivered = PendingIntent.getBroadcast(this, 0, new Intent(SMS_DELIVERED), 0); manager.sendTextMessage(number, null, message, piSend, piDelivered); etMessage.setText(""); } } } @Override protected void onResume() { registerReceiver(outgoingSMSBR, new IntentFilter(SMS_SENT)); registerReceiver(deliverSMSBR, new IntentFilter(SMS_DELIVERED)); super.onResume(); } @Override protected void onPause() { unregisterReceiver(outgoingSMSBR); unregisterReceiver(deliverSMSBR); super.onPause(); } private boolean isNullOrEmpty(String string){ return string == null || string.isEmpty(); } }