Как начать деятельность с BroadcastReceiver? - PullRequest
3 голосов
/ 20 ноября 2011

У меня есть широковещательный приемник (push-приемник 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: Для вызова startActivity () вне контекста Activity требуется флаг FLAG_ACTIVITY_NEW_TASK. Вы действительно этого хотите?

Я видел, как некоторые люди говорили, что это просто добавление FLAG_ACTIVITY_NEW_TASK к намерению, и об этом также говорит исключение, так что я действительно не понимаю, почему это не работает.

Кто-нибудь получил идею? Заранее спасибо!

1 Ответ

12 голосов
/ 20 ноября 2011

В вашем коде у вас есть:

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

, но ваше намерение для этого нового действия intentHome.Измените эту строку на:

intentHome.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
...