Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to get the `BroadcastReceiver` instance which is defined in `AndroidManifest.xml` [duplicate]

I have a BroadcastReceiver in my app, and it was defined in AndroidManifest.xml as below:

<receiver android:name=".receiver.MyTaskReceiver">
    <intent-filter>
        <action android:name="xxx.xxx.xxx" />
    </intent-filter>
</receiver>

This is the MyTaskReceiver code :

public class MyTaskReceiver extends BroadcastReceiver {

    private ReceiverListener listener ;

    @Override
    public void onReceive(Context context, Intent intent) {
        //do general things

        if(listener != null) {
            listener.received();    //do special things if the listener is setted up.
        }
    }

    public void setListener(ReceiverListener listener) {
        this.listener = listener;
    }

    public interface ReceiverListener {
        void received();
    }

} 

When the receiver got a intent, I will do some general things first, like save data...

But if the specified activity is displayed to the user, I need to do change the activity's views, so I use the ReceiverListener to do this. Set a listener to the MyTaskReceiver in onCreate and set null in onDestroy.

Then here comes an issue, how can to get the instance of the MyTaskReceiver so that I can set a listener to it?

Or is there any other ways to achieve what I want ?

Thanks.

like image 824
L. Swifter Avatar asked Oct 15 '25 07:10

L. Swifter


1 Answers

You can register receiver in your activity like this:

private void registerBroadcastReceiver() {
    IntentFilter intentFilter = new IntentFilter();
    intentFilter.addAction(xxx.xxx.xxx);
    registerReceiver(this.broadcastReceiver, intentFilter);
}

private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {

    @Override
    public void onReceive(Context context, Intent intent) {
        Bundle extras = intent.getExtras();
        //do whatever need to be done
    }
};

Hope it helps! :)

And remember to unregister your receiver (for example in onDestroy())

unregisterReceiver(this.broadcastReceiver);
like image 174
Natalia Avatar answered Oct 17 '25 19:10

Natalia