【发布时间】:2013-12-19 06:59:04
【问题描述】:
我正在尝试从 IntentService 向 Activity 发送广播,但它不起作用,即使服务确实发送了广播(我通过调试器工具检查)。
奇怪的是,我几乎没有其他广播服务,但只有这个特定的服务不起作用。
这是我的代码:
意图服务:
protected void onHandleIntent(Intent intent) {
// TODO Auto-generated method stub
Intent myItent = new Intent ("test");
sendBroadcast(intent);
}
MainActivity 中的广播接收器:
private BroadcastReceiver testbcreceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(getApplicationContext(), "succeed",
Toast.LENGTH_SHORT).show();
System.out.println("success");
}
};
onResume,我在这里注册 BroadcastReceiver。请注意,我这里有 4 项服务,4 项中有 2 项工作正常。
protected void onResume() {
super.onResume();
mds.open();
registerReceiver(testbcreceiver, new IntentFilter("test"));
registerReceiver(downloadServiceReceiver, new IntentFilter(
DownloadChapterService.NOTIFICATION));
registerReceiver(parsingMangaReceiver, new IntentFilter(
ParsingMangaLinkService.NOTIFICATION));
registerReceiver(parsingMangaChapterReceiver, new IntentFilter(
ParsingChapterMangaService.NOTIFICATION));
}
在 AndroidManifest.xml 中:
<service android:name="anvu.bk.service.ToastService">
</service>
感谢您查看我的问题。
【问题讨论】:
-
您是否在 Activity 上添加了 onReceive 方法,是否这样做:public class ResponseReceiver extends BroadcastReceiver { public static final String ACTION_RESP = "mypackagename.intent.action.MESSAGE_PROCESSED"; @Override public void onReceive(Context context, Intent intent) { // TODO 如果消息指示成功发布到服务器,则开始对话} }
-
我相信我已经在问题中发布了那部分代码。请检查它:)。
-
好吧,我解决了这个问题。结果我忘记更新意图过滤器的新“动作”名称。谢谢大家。 :D