Wednesday, March 23, 2011

Send SMS using Intent.ACTION_SENDTO

In last exercise, how to "Send SMS using android.telephony.SmsManager" is shown. Alternatively, we can startActivity with Intent.ACTION_SENDTO; the default SMS app will be called out to handle the job. In this method, it's no need to grant permission of "android.permission.SEND_SMS".

Send SMS using Intent.ACTION_SENDTO

Modify main.xml from last exercise "Send SMS using android.telephony.SmsManager" to add a button to startActivity with Intent.ACTION_SENDTO.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Enter Phone Number:"
/>
<EditText
android:id="@+id/smsnumber"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:inputType="phone"
/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Enter Phone SMS Text:"
/>
<EditText
android:id="@+id/smstext"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<Button
android:id="@+id/sendsms"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text=" Send SMS "
/>
<Button
android:id="@+id/sendsms_intent"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text=" Send SMS using Intent.ACTION_SENDTO "
/>
</LinearLayout>


Modify the code, AndroidSMS.java.
package com.exercise.AndroidSMS;

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class AndroidSMS extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

final EditText edittextSmsNumber = (EditText)findViewById(R.id.smsnumber);
final EditText edittextSmsText = (EditText)findViewById(R.id.smstext);
Button buttonSendSms = (Button)findViewById(R.id.sendsms);
Button buttonSendSms_intent = (Button)findViewById(R.id.sendsms_intent);

buttonSendSms.setOnClickListener(new Button.OnClickListener(){

@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
SmsManager smsManager = SmsManager.getDefault();
String smsNumber = edittextSmsNumber.getText().toString();
String smsText = edittextSmsText.getText().toString();
smsManager.sendTextMessage(smsNumber, null, smsText, null, null);
}});

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


Download the files.

3 comments:

  1. Hi,
    i m getting..
    android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.SENDTO dat=smsto:xxxx (has extras) }

    ReplyDelete
  2. Put permission in Android Manifest file

    after the
    syntax

    ReplyDelete
  3. Uri uri = Uri.parse("smsto:" + smsNumber);
    EditText txt = (EditText) findViewById(R.id.smstext);
    String text1 = txt.getText().toString();
    Intent i = new Intent(Intent.ACTION_SENDTO, uri);
    i.setPackage("com.whatsapp");
    i.putExtra(Intent.EXTRA_TEXT, text1);
    startActivity(Intent.createChooser(i, ""));


    I am Using Above Code Send Whatsapp Message to Partricular Number Butt Text Body Not Forwording Do You Have Any Code

    ReplyDelete