1

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

我有一个需要发送广播的应用程序,这些广播的预期接收者是我的应用程序当前正在运行的任何 Activity。

所以......我的广播目前看起来像这样(我仍然不清楚类定义的意义在这里......我是否打算特别针对某些东西?)但在活动中没有听到它。

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

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

然后在我的各种活动中,我有一个像这样的本地广播接收器:

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

 }

所以,目前,正在发送广播(我想......我也不知道如何验证,但没有引发异常,所以,我猜它会出去),但是活动没有进入该代码块。

4

2 回答 2

0

啊!

我想通了...为后代回答...

将广播更改为

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

和宾果游戏。

于 2013-01-23T10:46:07.003 回答
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); 
}
于 2013-01-23T10:50:01.463 回答