Android:如何从BroadcastReceiver恢复应用程序/活动?

时间:2012-03-27 00:58:38

标签: android android-activity android-intent broadcastreceiver

如果我的程序如下:

  1. 启动活动A - >活动B
  2. 按“主页”按钮。
  3. 再次点击该应用程序。
  4. 结果:'活动B'显示(恢复)。

    1. 启动活动A - >活动B
    2. 按“返回”按钮。
    3. 再次点击该应用程序。
    4. 结果:'活动A'显示(重新启动)。

      我想从BroadcastReceiver做同样的事情。

      1. 启动活动A - >活动B
      2. 按“主页”按钮。
      3. BroadcastReceiver接收广播并希望“恢复”应用程序。
      4. 我的预期结果:'活动B'出现。

        我想从BroadcastReceiver做同样的事情。

        1. 启动活动A - >活动B
        2. 按“返回”按钮。
        3. BroadcastReceiver接收广播并希望“重启”应用程序。
        4. 当前结果:'活动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 个答案:

答案 0 :(得分:4)

我的天哪,我让它工作了!!

感谢你们提供的其他答案,但他们并不是我想要的。

这将完成这项工作:

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

答案 1 :(得分:4)

看看这个

为您的意图Intent.FLAG_ACTIVITY_REORDER_TO_FRONT

设置标记

Intent.FLAG_ACTIVITY_NEW_TASK如下

intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT|Intent.FLAG_ACTIVITY_NEW_TASK);