Android: как восстановить приложение / активность с BroadcastReceiver? - PullRequest
4 голосов
/ 27 марта 2012

Если моя процедура следующая:

  1. Запустить мероприятие A -> Задание B
  2. Нажмите кнопку «Домой».
  3. Нажмите на приложение еще раз.

Результат: Появляется «Действие B» (оно возобновляется ).

  1. Запустить упражнение A -> Задание B
  2. Нажмите кнопку «Назад».
  3. Нажмите на приложение еще раз.

Результат: Появляется «Задание A» (оно перезапускается ).

Я хочу сделать то же самое с BroadcastReceiver.

  1. Запустить упражнение A -> Задание B
  2. Нажмите кнопку «Домой».
  3. BroadcastReceiver принимает трансляцию и хочет «возобновить» приложение.

Мой ожидаемый результат: Появляется «Деятельность B».

Я хочу сделать то же самое с BroadcastReceiver.

  1. Запустить упражнение A -> Задание B
  2. Нажмите кнопку «Назад».
  3. BroadcastReceiver получает трансляцию и хочет «перезапустить» приложение.

Текущий результат: «Активность A» появляется.

Следующий код не делает то, что я ожидаю:

public void onReceive(Context context, Intent intent) {
        Intent i = new Intent(context, ActivityA.class);
        i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(i);
    }

Я также попробовал "Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY", но безуспешно.

Ответы [ 2 ]

4 голосов
/ 24 апреля 2012

проверьте это

установите флажки для ваших намерений Intent.FLAG_ACTIVITY_REORDER_TO_FRONT и

Intent.FLAG_ACTIVITY_NEW_TASK следующим образом

intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT|Intent.FLAG_ACTIVITY_NEW_TASK);
4 голосов
/ 27 марта 2012

Черт возьми, я заставил это работать !!

Спасибо за другие ответы, которые вы, ребята, предоставили, но они были не тем, что я искал.

Это сделает работу:

Intent i = getPackageManager().getLaunchIntentForPackage("com.your.package.name");
i.setFlags(0);
i.setPackage(null);
startActivity(i);
...