如何获取在 `AndroidManifest.xml` 中定义的 `BroadcastReceiver` 实例

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

我的应用程序中有一个 BroadcastReceiver,它在 AndroidManifest.xml 中定义如下:

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

这是 MyTaskReceiver 代码:

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();
    }

} 

当接收者得到一个意图时,我会先做一些一般的事情,比如保存数据...

但是如果指定的 activity 显示给用户,我需要更改 activity 的视图,所以我使用 ReceiverListener 来执行此操作。在 onCreate 中设置 MyTaskReceiver 的侦听器并在 onDestroy.

中设置 null

那么问题来了,如何获取MyTaskReceiver的实例,然后设置监听器呢?

或者有没有其他方法可以实现我想要的?

谢谢。

您可以像这样在 activity 中注册接收器:

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
    }
};

希望对您有所帮助! :)

并记得取消注册您的接收器(例如在 onDestroy() 中)

unregisterReceiver(this.broadcastReceiver);