title: Sending SMS in Android
body: <p>I am using the below code to send SMS to an Android mobile. But if I send the <a href="http://en.wikipedia.org/wiki/SMS">SMS</a> to any number it's not being sent. What could be the issue?</p>
  
  <pre><code>package SMSApp.com;
  
  import android.app.Activity;
  import android.app.PendingIntent;
  import android.content.BroadcastReceiver;
  import android.content.Context;
  import android.content.Intent;
  import android.content.IntentFilter;
  import android.os.Bundle;
  import android.telephony.SmsManager;
  import android.view.View;
  import android.widget.Button;
  import android.widget.EditText;
  import android.widget.Toast;
  
  public class SMS extends Activity {
      /** Called when the activity is first created. */
  
      Button btnSendSMS;
      EditText txtPhoneNo;
      EditText txtMessage;
  
      @Override
      public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.main);
  
          btnSendSMS = (Button) findViewById(R.id.btnSendSMS);
          txtPhoneNo = (EditText) findViewById(R.id.txtPhoneNo);
          txtMessage = (EditText) findViewById(R.id.txtMessage);
  
          btnSendSMS.setOnClickListener(new View.OnClickListener()
          {
              public void onClick(View v)
              {
                  String phoneNo = txtPhoneNo.getText().toString();
                  String message = txtMessage.getText().toString();
                  if (phoneNo.length()&gt;0 &amp;&amp; message.length()&gt;0)
                      sendSMS(phoneNo, message);
                  else
                      Toast.makeText(getBaseContext(),
                          "Please enter both phone number and message.",
                          Toast.LENGTH_SHORT).show();
              }
  
              /*private void sendSMS(String phoneNo, String message) {
                  // TODO Auto-generated method stub
  
                  PendingIntent pi = PendingIntent.getActivity(SMS.this, 0, new Intent(SMS.this, SMS.class), 0);
                      SmsManager sms = SmsManager.getDefault();
                      sms.sendTextMessage(phoneNo, null, message, pi, null);
              }*/
  
              private void sendSMS(String phoneNumber, String message)
              {
                  String SENT = "SMS_SENT";
                  String DELIVERED = "SMS_DELIVERED";
  
                  PendingIntent sentPI = PendingIntent.getBroadcast(SMS.this, 0,
                      new Intent(SENT), 0);
  
                  PendingIntent deliveredPI = PendingIntent.getBroadcast(SMS.this, 0,
                      new Intent(DELIVERED), 0);
  
                  //---when the SMS has been sent---
                  registerReceiver(new BroadcastReceiver(){
                      @Override
                      public void onReceive(Context arg0, Intent arg1) {
                          switch (getResultCode())
                          {
                              case Activity.RESULT_OK:
                                  Toast.makeText(getBaseContext(), "SMS sent",
                                          Toast.LENGTH_SHORT).show();
                                  break;
                              case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
                                  Toast.makeText(getBaseContext(), "Generic failure",
                                          Toast.LENGTH_SHORT).show();
                                  break;
                              case SmsManager.RESULT_ERROR_NO_SERVICE:
                                  Toast.makeText(getBaseContext(), "No service",
                                          Toast.LENGTH_SHORT).show();
                                  break;
                              case SmsManager.RESULT_ERROR_NULL_PDU:
                                  Toast.makeText(getBaseContext(), "Null PDU",
                                          Toast.LENGTH_SHORT).show();
                                  break;
                              case SmsManager.RESULT_ERROR_RADIO_OFF:
                                  Toast.makeText(getBaseContext(), "Radio off",
                                          Toast.LENGTH_SHORT).show();
                                  break;
                          }
                      }
                  }, new IntentFilter(SENT));
  
                  //---when the SMS has been delivered---
                  registerReceiver(new BroadcastReceiver(){
                      @Override
                      public void onReceive(Context arg0, Intent arg1) {
                          switch (getResultCode())
                          {
                              case Activity.RESULT_OK:
                                  Toast.makeText(getBaseContext(), "SMS delivered",
                                          Toast.LENGTH_SHORT).show();
                                  break;
                              case Activity.RESULT_CANCELED:
                                  Toast.makeText(getBaseContext(), "SMS not delivered",
                                          Toast.LENGTH_SHORT).show();
                                  break;
                          }
                      }
                  }, new IntentFilter(DELIVERED));
  
                  SmsManager sms = SmsManager.getDefault();
                  sms.sendTextMessage(phoneNumber, null, message, sentPI, deliveredPI);
              }
          });
      }
  }
  </code></pre>