How can I send sms messages in the BACKGROUND using Android? How can I send sms messages in the BACKGROUND using Android? android android

How can I send sms messages in the BACKGROUND using Android?


Send SMS with SMS-Delivery notification as toast.

method call as below.

sendSMS("98********","This is test message");

method signature as below.

/* * BroadcastReceiver mBrSend; BroadcastReceiver mBrReceive; */private void sendSMS(String phoneNumber, String message) {    ArrayList<PendingIntent> sentPendingIntents = new ArrayList<PendingIntent>();    ArrayList<PendingIntent> deliveredPendingIntents = new ArrayList<PendingIntent>();    PendingIntent sentPI = PendingIntent.getBroadcast(mContext, 0,            new Intent(mContext, SmsSentReceiver.class), 0);    PendingIntent deliveredPI = PendingIntent.getBroadcast(mContext, 0,            new Intent(mContext, SmsDeliveredReceiver.class), 0);    try {        SmsManager sms = SmsManager.getDefault();        ArrayList<String> mSMSMessage = sms.divideMessage(message);        for (int i = 0; i < mSMSMessage.size(); i++) {            sentPendingIntents.add(i, sentPI);            deliveredPendingIntents.add(i, deliveredPI);        }        sms.sendMultipartTextMessage(phoneNumber, null, mSMSMessage,                sentPendingIntents, deliveredPendingIntents);    } catch (Exception e) {        e.printStackTrace();        Toast.makeText(getBaseContext(), "SMS sending failed...",Toast.LENGTH_SHORT).show();    }}

Now two more classes SmsDeliveredReceiver,SmsSentReceiver as below.

public class SmsDeliveredReceiver extends BroadcastReceiver {    @Override    public void onReceive(Context context, Intent arg1) {        switch (getResultCode()) {            case Activity.RESULT_OK:                Toast.makeText(context, "SMS delivered", Toast.LENGTH_SHORT).show();                break;            case Activity.RESULT_CANCELED:                Toast.makeText(context, "SMS not delivered", Toast.LENGTH_SHORT).show();                break;        }    }}

Now SmsSentReceiver.

public class SmsSentReceiver extends BroadcastReceiver {    @Override    public void onReceive(Context context, Intent arg1) {        switch (getResultCode()) {            case Activity.RESULT_OK:                Toast.makeText(context, "SMS Sent", Toast.LENGTH_SHORT).show();                break;            case SmsManager.RESULT_ERROR_GENERIC_FAILURE:                Toast.makeText(context, "SMS generic failure", Toast.LENGTH_SHORT).show();                break;            case SmsManager.RESULT_ERROR_NO_SERVICE:                Toast.makeText(context, "SMS no service", Toast.LENGTH_SHORT)                .show();                break;            case SmsManager.RESULT_ERROR_NULL_PDU:                Toast.makeText(context, "SMS null PDU", Toast.LENGTH_SHORT).show();                break;            case SmsManager.RESULT_ERROR_RADIO_OFF:                Toast.makeText(context, "SMS radio off", Toast.LENGTH_SHORT).show();                break;        }    }}

Now Permissions open your AndroidManifest.xml and add below line

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

and its done.......


Yes, you can do it by using:

SmsManager sm = SmsManager.getDefault(); sm.sendTextMessage(number, null, message, null, null);