Skip to content

Instantly share code, notes, and snippets.

@Antarix
Created August 23, 2013 09:27
Show Gist options
  • Star 12 You must be signed in to star a gist
  • Fork 3 You must be signed in to fork a gist
  • Save Antarix/6317303 to your computer and use it in GitHub Desktop.
Save Antarix/6317303 to your computer and use it in GitHub Desktop.
Send SMS in android with delivery report
//---sends an SMS message to another device---
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);
}
@oumastmohamed
Copy link

Hello,
I want to retrieve for each SMS send its status, either to deliver or not, for example, I have a class represents a sms called 'SmsClass' contains four attributes (id, phone, message, state).
Qaunt I send a sms I want to change the state of each object.
How can I do that, please help me.

@jiangbophd
Copy link

Very Good!!! thanks!

@nitishguptajsr
Copy link

Why "Generics failure" error is coming while sending SMS through my ?

@nitishguptajsr
Copy link

Please solve my problem

@majedalmoqbeli
Copy link

Why "Generics failure" error is coming while sending SMS through my ?

I got the same problem

@mihirmodiofficial
Copy link

Default messaging app works fine but when i am trying to send sms from my app everytime it gives error generic failure and in default Messaging app that message shows Failed with retry button

@majedalmoqbeli
Copy link

Default messaging app works fine but when i am trying to send sms from my app everytime it gives error generic failure and in default Messaging app that message shows Failed with retry button

Can you show me the syntax of phone number, i think i can help you.

@mihirmodiofficial
Copy link

    val sms = SmsManager.getDefault()
    sms.sendTextMessage(mobileNumber, null, "url", sentPI, deliveredPI) //+9176XXXXXXXX

@majedalmoqbeli
Copy link

try to remove the " + " from the phone number i think it will works fine.

@mihirmodiofficial
Copy link

    val sms = SmsManager.getDefault()
    sms.sendTextMessage(mobileNumber.replace("+",""), null, "url", sentPI, deliveredPI)

still same issue

@mihirmodiofficial
Copy link

#HelpingHands

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


    val subscriptionManager: SubscriptionManager = context!!.getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE) as SubscriptionManager
    val subscriptionInfoList = subscriptionManager.activeSubscriptionInfoList
    //https://stackoverflow.com/questions/27351936/how-to-send-a-sms-using-smsmanager-in-dual-sim-mobile
    val sms = SmsManager.getSmsManagerForSubscriptionId(subscriptionInfoList.get(0).subscriptionId)
    sms.sendTextMessage(mobileNumber, null, url, sentPI, deliveredPI)

@xlastfire
Copy link

it works fine with me

@mohdqasim
Copy link

@Antarix where your unregistering the broad cast receivers?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment