0

Why does whenever I send a sms to a contact number, it always says "SMS sent" when I just used a random cellphone number like "12345678910" which of course has 11 digits. also, it doesn't show the toast when the message is actually delivered or not.

private void sendSMS(String phoneNumber, String message)
{        
        sentFailed = new ArrayList<String>();

        final String phoneNumberCopy = phoneNumber;
        String SENT = "SMS_SENT";
        String DELIVERED = "SMS_DELIVERED";

        PendingIntent sentPI = PendingIntent.getBroadcast(this, 0,
            new Intent(SENT), 0);

        PendingIntent deliveredPI = PendingIntent.getBroadcast(this, uniqueIdPerSMS++,
                new Intent(DELIVERED), PendingIntent.FLAG_CANCEL_CURRENT);

        //---when the SMS has been sent---
        registerReceiver(new BroadcastReceiver()
        {
            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:
                        sentFailed.remove(phoneNumberCopy);
                        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();

        //send sms
        sms.sendTextMessage(phoneNumber, null, message, sentPI, deliveredPI);        
}
Manuel Allenspach
  • 12,467
  • 14
  • 54
  • 76
Usui Takumi
  • 355
  • 2
  • 5
  • 19

1 Answers1

0

SMS SENT appeared because you have receiving a sent report from the onRecive method.When your message sent your Onrecive callback method is called and it fires SMS SENT Message

Dapper Dan
  • 932
  • 11
  • 23