Search code examples
androidsmsbroadcastreceiverandroid-activity

Receive broadcast when send an sms


How to receive broadcast when a user sends SMS from his Android phone? I am creating an application which is taking track of sent SMS and calls. I am done with the calls part, please help me with the SMS. Note that sms are sent by the phone not any application.

----------//solution-----------

  public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(VIEW_RESOURCE_ID);

            SendSmsObserver smsObeserver = (new SendSmsObserver(new Handler()));
            ContentResolver contentResolver = this.getContentResolver();
            contentResolver.registerContentObserver(Uri.parse("content://sms"),true, smsObeserver);
        }


    public class SendSmsObserver extends ContentObserver {

            public SendSmsObserver(Handler handler) {
                super(handler);
            }

            @Override
            public void onChange(boolean selfChange) {
                super.onChange(selfChange);
                // save the message to the SD card here

                 Log.d("sent sms", "one text send");

            }
        }

Solution

  • I found the answer

    public void onCreate(Bundle savedInstanceState) {
                    super.onCreate(savedInstanceState);
                    setContentView(VIEW_RESOURCE_ID);
    
                    SendSmsObserver smsObeserver = (new SendSmsObserver(new Handler()));
                    ContentResolver contentResolver = this.getContentResolver();
                    contentResolver.registerContentObserver(Uri.parse("content://sms"),true, smsObeserver);
                }
    
    
            public class SendSmsObserver extends ContentObserver {
    
                    public SendSmsObserver(Handler handler) {
                        super(handler);
                    }
    
                    @Override
                    public void onChange(boolean selfChange) {
                        super.onChange(selfChange);
                        // save the message to the SD card here
    
                         Log.d("sent sms", "one text send");
    
                    }
                }