从服务到活动的Android广播

我正试图从服务中发送一个广播到一个活动。 我可以validation广播是从服务内发送的,但活动不会收到任何东西。

以下是相关的服务代码:

Intent i = new Intent(NEW_MESSAGE); i.putExtra(FriendInfo.USERNAME, StringUtils.parseBareAddress(message.getFrom())); i.putExtra(FriendInfo.MESSAGE, message.getBody()); i.putExtra("who", "1"); sendBroadcast(i); 

而活动课的接收端:

 public class newMessage extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if(action.equalsIgnoreCase(IMService.NEW_MESSAGE)){ Bundle extra = intent.getExtras(); String username = extra.getString(FriendInfo.USERNAME); String message = extra.getString(FriendInfo.MESSAGE); String who = extra.getString("who"); } } } 

BroadcastReceiver在Activity中定义。 我在Activity的onCreate方法中注册接收者,而不是在Manifest文件中。

我很难为什么它不会rec。 任何东西。

任何见解?

编辑
注册发生如下:

  registerReceiver(messageReceiver, new IntentFilter(IMService.NEW_MESSAGE)); 

其中“messageReceiver”被定义为

 private newMessage messageReceiver = new newMessage(); 

IMService.NEW_MESSAGE仅仅是一个string=“NewMessage”

Solutions Collecting From Web of "从服务到活动的Android广播"

我不确定是否是特定的设置,或者如果它是一般的修复,但移动register/unregister onResume/onPause _respectively_而不是在onCreate注册解决了我的问题。

试试这两件事情:

  1. 使用清单文件注册接收器(但几乎没有帮助)
  2. 尝试让你的接收者是一个普通的class级,而不是内在的。

内部类广播接收器将无法处理广播(意味着它无法find该类)。 所以把它作为一个单独的课程

肯定会起作用。