Search code examples
javaandroidsmssmsmanager

Does android SmsManager show message is sent for numbers that are switched off?


I am trying to understand how import android.telephony.SmsManager; would know that an sms was successfully delivered.

I am using this code from the study guide

 protected void sendSMSMessage() {
      Log.i("Send SMS", "");

      String phoneNo = txtphoneNo.getText().toString();
      String message = txtMessage.getText().toString();

      try {
         SmsManager smsManager = SmsManager.getDefault();
         smsManager.sendTextMessage(phoneNo, null, message, null, null);
         Toast.makeText(getApplicationContext(), "SMS sent.",
         Toast.LENGTH_LONG).show();
      } catch (Exception e) {
         Toast.makeText(getApplicationContext(),
         "SMS failed, please try again.",
         Toast.LENGTH_LONG).show();
         e.printStackTrace();
      }
   }

Ordinarily,i know when i send an sms to a number that is switched off,i don't receive the delivery report to confirm that the message was received.Does import android.telephony.SmsManager; show the message was sent even if the number is switched off?.


Solution

  • Try This:

            package com.splash.smsManager;
    
            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.telephony.SmsMessage;
            import android.view.View;
            import android.view.View.OnClickListener;
            import android.widget.Button;
            import android.widget.Toast;
    
            public class SendingSmsWithReport extends Activity {
                String sendingSmsStatus = "SEND";
                String deliverySmsStatus = "DELIVERED";
                PendingIntent send, delivered;
                BroadcastReceiver sendReceiver, deliveredRecevier;
    
                @Override
                protected void onCreate(Bundle savedInstanceState) {
                    // TODO Auto-generated method stub
                    super.onCreate(savedInstanceState);
                    setContentView(R.layout.main_activity);
                    send = PendingIntent.getBroadcast(this, 0,
                            new Intent(sendingSmsStatus), 0);
                    delivered = PendingIntent.getBroadcast(this, 0, new Intent(
                            deliverySmsStatus), 0);
                    Button sendSmsButton = (Button) findViewById(R.id.button1);
                    sendSmsButton.setOnClickListener(new OnClickListener() {
    
                        @Override
                        public void onClick(View arg0) {
                            // TODO Auto-generated method stub
                            SmsManager sms  = SmsManager.getDefault();
                            sms.sendTextMessage("5556", null, "Hello Welcome to Android", send, delivered);
                            //5556 is Emulator Number.
                        }
                    });
                }
    
                @Override
                protected void onPause() {
                    // TODO Auto-generated method stub
                    super.onPause();
                    unregisterReceiver(sendReceiver);
                    unregisterReceiver(deliveredRecevier);
                }
    
                @Override
                protected void onResume() {
                    // TODO Auto-generated method stub
                    super.onResume();
                    sendReceiver = new BroadcastReceiver() {
    
                        @Override
                        public void onReceive(Context context, Intent intent) {
                            switch(getResultCode())
                            {
                            case Activity.RESULT_OK:
                                Toast.makeText(getBaseContext(), "Sms Sent Successfully", Toast.LENGTH_LONG).show();
                                break;
                            case SmsManager.RESULT_ERROR_NO_SERVICE:
                                Toast.makeText(getBaseContext(), "No Serice Found in your Device", Toast.LENGTH_LONG).show();
                                break;
                            }
    
                        }
                    };
                    deliveredRecevier = new BroadcastReceiver() {
    
                        @Override
                        public void onReceive(Context context, Intent intent) {
                            switch(getResultCode())
                            {
                            case Activity.RESULT_OK:
                                Toast.makeText(getBaseContext(), "Sms Successfully Delivered", Toast.LENGTH_LONG).show();
                                break;
                            case Activity.RESULT_CANCELED:
                                Toast.makeText(getBaseContext(), "Sms not Delivered", Toast.LENGTH_LONG).show();
                                break;
                            }
    
                        }
                    };
                    registerReceiver(sendReceiver, new IntentFilter(sendingSmsStatus));
                    registerReceiver(deliveredRecevier, new IntentFilter(deliverySmsStatus));
                }
    
    
            }