views:

5363

answers:

1

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.

+5  A: 

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.

Josef
Hi Josef, I am wondering have tou made any more advances with this? I can currently listen out for messages being sent via a content observer but I would like to stop the sms from being sent over the GSM/CDMA network and sent over a data connection instead. Would you have any insight into how to block an sms from sending over GSM/CDMA?
Donal Rafferty
No, unfortunately. But I think *blocking* the message is going to be even trickier. I'll let you know if I think of something. Meanwhile, try asking a question on stackoverflow.com ;-)
Josef