Is this possible to check if a broadcast was sent in sticky mode?
Can we completely abort/remove a sticky broadcast? If yes, then can it be done for both normal and ordered broadcasts?
Is this possible to check if a broadcast was sent in sticky mode?
Can we completely abort/remove a sticky broadcast? If yes, then can it be done for both normal and ordered broadcasts?
In onReceive()
you can use the following calls:
isInitialStickyBroadcast()
- This will tell you if the broadcast you are currently processing was sent as "sticky" and was the current one when the BroadcastReceiver
was registered.
isOrderedBroadcast()
- This will tell you if the broadcast you are currently processing was sent as an "ordered" broadcast.
If you just want to see if there is a "sticky" broadcast, you can call
registerReceiver (BroadcastReceiver receiver, IntentFilter filter)
and supply null
as the receiver
parameter. This will return any "sticky" broadcast without actually registering the receiver.
You can remove a sticky broadcast using:
removeStickyBroadcast(Intent intent)
However, IMHO that would be counter-productive. Usually "sticky" broadcasts are sent to indicate the current state of something. So removing it would imply that it isn't possible for an application to determine the current state.