如何从BroadcastReceiver开始活动?

时间:2011-11-19 23:43:08

标签: android android-intent android-activity broadcastreceiver

我有一个广播接收器(c2dm推送接收器)。 当我接受推动时,我希望这种情况发生:

  • 开始通知,您将被引导至StopAlarmActivity(完成!)
  • 如果应用程序在前面,请启动StopAlarmActivity(我该如何检查)

我的主要问题是我无法让广播接收器为我启动StopAlarmActivity。

我已在清单中注册了广播接收器。

这是我用来尝试开始活动的代码:

Intent intentHome = new Intent(context, StopAlarmActivity.class);
          intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
          context.startActivity(intentHome);

这是堆栈跟踪消息:

  

11-20 00:29:30.514:E / AndroidRuntime(13612):   java.lang.RuntimeException:无法启动接收器   com.packagename.PushReceiver:android.util.AndroidRuntimeException:   从Activity上下文外部调用startActivity()需要   FLAG_ACTIVITY_NEW_TASK标志。这真的是你想要的吗?

我见过有人说这只是为了向意图添加FLAG_ACTIVITY_NEW_TASK,而异常也告诉我,所以我真的不明白为什么它不起作用。

有人有个主意吗? 提前谢谢!

1 个答案:

答案 0 :(得分:12)

在您的代码中,您有:

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

但您对此新活动的意图是intentHome。将该行更改为:

intentHome.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);