我正在尝试从服务发送广播到活动。我可以验证广播是从服务中发送的,但是活动没有收到任何内容。
以下是相关的服务代码:
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文件中注册。
我很难过为什么不会记录。任何东西。
有什么见解?
修改的
注册如下:
registerReceiver(messageReceiver, new IntentFilter(IMService.NEW_MESSAGE));
“messageReceiver”定义为
private newMessage messageReceiver = new newMessage();
IMService.NEW_MESSAGE只是一个字符串=“NewMessage”
答案 0 :(得分:10)
我不确定它是否特定于设置,或者它是否一般是修复,而是将register/unregister
移至onResume/onPause
_respectively_
而未注册onCreate
解决了我的问题。
答案 1 :(得分:1)
尝试这两件事:
答案 2 :(得分:0)
内部类广播接收器将无法处理广播(意味着它无法定位该类)。 所以把它作为一个单独的类
肯定会起作用。