如何从BroadcastReceiver开始活动?

Ikk*_*kky 3 android broadcastreceiver android-intent android-activity

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

  • 启动通知,您将获得StopAlarmActivity(完成!)
  • 如果应用程序在前面,启动StopAlarmActivity(我该如何检查)

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

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

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

Intent intentHome = new Intent(context, StopAlarmActivity.class);
          intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
          context.startActivity(intentHome);
Run Code Online (Sandbox Code Playgroud)

这是stacktrace消息:

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,异常也告诉我,所以我真的不明白为什么它不起作用.

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

kab*_*uko 12

在您的代码中,您有:

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
Run Code Online (Sandbox Code Playgroud)

但你对这项新活动的意图是intentHome.将该行更改为:

intentHome.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
Run Code Online (Sandbox Code Playgroud)