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

如何获取在`AndroidManifest.xml中定义的`BroadcastReceiver`实例`,android,broadcastreceiver,android-broadcastreceiver,Android,Broadcastreceiver,Android Broadcastreceiver,我的应用程序中有一个BroadcastReceiver,它在AndroidManifest.xml中定义如下: <receiver android:name=".receiver.MyTaskReceiver"> <intent-filter> <action android:name="xxx.xxx.xxx" /> </intent-filter> </receiver> 当接收者有意向时,我会先做

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

<receiver android:name=".receiver.MyTaskReceiver">
    <intent-filter>
        <action android:name="xxx.xxx.xxx" />
    </intent-filter>
</receiver>
当接收者有意向时,我会先做一些一般性的事情,比如保存数据

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

然后出现了一个问题,如何获取
MyTaskReceiver
的实例,以便为其设置侦听器

或者有没有其他方法来实现我想要的


谢谢。

您可以像这样在活动中注册接收者:

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


在清单文件中定义接收者时,不需要对接收者的引用。只需在BroadcastReceiver类中处理意图。不幸的是,Receiver不是这样工作的。将创建该实例,并将
intent
交付给
onReceived
,然后销毁。您无法向其注册侦听器。看看@Natalia answer。这似乎就是你想要的。@Budius你的评论就是我想要的答案,谢谢。我知道我可以在活动中注册BroadcastReceiver,但我的接收器不依赖于特殊活动,我需要它在应用程序运行时工作,而不是在活动运行时工作。谢谢你:)
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
    }
};
unregisterReceiver(this.broadcastReceiver);