如何从我的应用程序向当前打开的活动发送广播?

时间:2013-01-23 10:36:19

标签: android broadcastreceiver

我尝试了很多不同的方法,不幸的是我仍然对我传入广播的意图的性质感到困惑所以希望得到一些指导......

我有一个应用程序,需要发送广播和目标收件人这些是我的应用程序当前正在运行的任何活动。

所以...我的广播目前看起来像这样(我还不清楚这个类定义的重点是什么......我是不是要特别针对某些东西?)但它并没有在活动。

我的应用程序目前正在尝试发送这样的广播:

Intent intent = new Intent(
getPackageName() + ".FOO");//FOO is one of the 7 or so possible Activities that are in the overall app... I don't *want to name it perse, I just don't know what to replace it with 
intent.putExtra("com.mything.somethingSpecial", "TIME TO PARTY");
sendBroadcast(intent);

然后在我的各种活动中,我有一个像这样的本地BroadcastReciever:

private BroadcastReceiver receiver = new BroadcastReceiver() {
   @Override
   public void onReceive(Context context, Intent intent) {
        //do stuff
   };
}

和onResume,onPause东西......

@Override
public void onPause{
  this.unregisterReceiver(this.receiver);
}

@Override
public void onResume(){
   super.onResume();
   IntentFilter filter = new IntentFilter();
   filter.addAction("com.mything.somethingSpecial");
   this.registerReceiver(this.receiver, filter);

 }

所以,目前,正在发送广播(我想...我不知道如何验证这一点,我猜,但没有例外,所以,我猜它已经出去了) ,但活动没有进入该代码块。

2 个答案:

答案 0 :(得分:0)

阿!

我想通了......回答后人......

将广播更改为

 Intent intent = new Intent();
 intent.setAction("com.mything.somethingSpecial");
 sendBroadcast(intent);

和宾果。

答案 1 :(得分:0)

这样做

 Intent intent = new Intent("com.mything.somethingSpecial.Broadcast"); 
 intent.putExtra("com.mything.somethingSpecial", "TIME TO PARTY");
 sendBroadcast(intent);

然后

@Override
public void onPause{
  this.unregisterReceiver(this.receiver);
}

@Override
public void onResume(){
super.onResume();
IntentFilter filter = new IntentFilter();
filter.addAction("com.mything.somethingSpecial.Broadcast");
this.registerReceiver(this.receiver, filter); 
}