title: How to send free SMS in android..i want to know WhatsApp,Wechat ..this type of messeging applications how provide us sending messege for free
body: <p>This is my Code for sending SMS</p>
  
  <pre><code>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 SMSTest extends Activity
  {
  Button btnSendSMS;
  EditText txtPhoneNo;
  EditText txtMessage; 
  </code></pre>
  
  <p>Called when the activity is first created.</p>
  
  <pre><code>@Override
  public void onCreate(Bundle savedInstanceState)
  {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.sendingsms);
  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();
  }
  });
  }
  </code></pre>
  
  <p>sends a SMS message to another device</p>
  
  <pre><code>private void sendSMS(String phoneNumber, String message)
  {
  
  String SENT = "SMS_SENT";
  String DELIVERED = "SMS_DELIVERED";
  
  PendingIntent sentPI = PendingIntent.getBroadcast(this, 0,
  new Intent(SENT), 0);
  
  PendingIntent deliveredPI = PendingIntent.getBroadcast(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>
  
  <p>This code is to receive the SMS</p>
  
  <pre><code>import android.content.BroadcastReceiver;
  import android.content.Context;
  import android.content.Intent;
  import android.os.Bundle;
  import android.telephony.SmsMessage;
  import android.widget.Toast;
  
  public class SmsReceiver extends BroadcastReceiver
  {
  @Override
  public void onReceive(Context context, Intent intent)
  {
  //—get the SMS message passed in—
  Bundle bundle = intent.getExtras();
  SmsMessage[] msgs = null;
  String str = "";
  if (bundle != null)
  {
  //—retrieve the SMS message received—
  Object[] pdus = (Object[]) bundle.get("pdus");
  msgs = new SmsMessage[pdus.length];
  for (int i=0; i&lt;msgs.length; i++){
  msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]);
  str += "SMS from " + msgs[i].getOriginatingAddress();
  str += " :";
  str += msgs[i].getMessageBody().toString();
  str += "\n";
  }
  //—display the new SMS message—
  Toast.makeText(context, str, Toast.LENGTH_SHORT).show();
  }
  }
  }
  </code></pre>
  
  <p>And this is the XML file..</p>
  
  <pre><code>&lt;?xml version="1.0" encoding="utf-8"?&gt;
      &lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
      android:orientation="vertical"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
      &gt;
      &lt;TextView
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:text="Enter the phone number of recipient"
      /&gt;
      &lt;EditText
      android:id="@+id/txtPhoneNo"
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      /&gt;
      &lt;TextView
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:text="Message"
      /&gt;
      &lt;EditText
      android:id="@+id/txtMessage"
      android:layout_width="fill_parent"
      android:layout_height="150px"
      android:gravity="top"
      /&gt;
      &lt;Button
      android:id="@+id/btnSendSMS"
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:text="Send SMS"
      /&gt;
      &lt;/LinearLayout&gt;
  </code></pre>
  
  <p>Very basic application ..i need to know is it possible to send SMS through coding ...if not then how whatsApp gives us permission to send sms for free..does they pay??..or we can use some API... </p>