Android Broadcast Receiver for Sent SMS messages?

Josef Pfleger picture Josef Pfleger · Jun 13, 2009 · Viewed 25.9k times · Source

I created a BroadcastReceiver and configured it with an android.provider.Telephony.SMS_RECEIVED action filter so it is called everytime the phone receives a text.

Is there some event/action or other way for my application to be notified whenever the phone sends a text (preferably independent of the application that sends it)?

So far the only option I see is to poll the content provider for content://sms/sent which doesn't even give me all sent texts because applications can choose not to put it there.

Answer

Josef Pfleger picture Josef Pfleger · Jul 7, 2009

Unfortunately there is (currently) no way to implement a BroadcastReceiver because the standard sms application uses a SmsManger to send the messages but specifies concrete internal classes for the sent and delivered intents (SmsReceiver.class and MessageStatusReceiver.class respectively). Not that it is any consolation but you can find the following comment in the Sms application's source:

// TODO: Fix: It should not be necessary to
// specify the class in this intent.  Doing that
// unnecessarily limits customizability.

The best alternative seems to be polling content://sms/sent, potentially using a ContentObserver.