从自定义快捷方式启动活动时如何销毁以前的所有活动?

时间:2013-03-30 19:28:26

标签: android android-activity shortcut

我的步骤:

  1. 启动器快捷方式启动活动 A ;
  2. 点击 HOME 按钮;
  3. 自定义快捷方式启动活动 B ;
  4. 点击返回按钮 - 向我显示活动 A
  5. 但是当我点击自定义快捷方式时,我想要所有旧活动关闭。我怎么能这样做?

    清单:

    activity A: android:launchMode="singleTop"
    activity B: android:launchMode="singleTop" and android:exported="true"
    

    java:

    private void setShortCut() {
      Intent shortcutIntent = new Intent(getApplicationContext(), A.class);
      shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);
      shortcutIntent.setAction(Intent.ACTION_MAIN);
      Intent intent = new Intent();
      intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
      intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "test");
      intent.putExtra(Intent.EXTRA_SHORTCUT_ICON, ((BitmapDrawable)imgLogo.getDrawable()).getBitmap());
      intent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
      sendBroadcast(intent);
    }
    

2 个答案:

答案 0 :(得分:1)

activity A: android:finishOnTaskLaunch="true"
activity B: android:finishOnTaskLaunch="true" and android:exported="true"  

来自http://developer.android.com/guide/topics/manifest/activity-element.html#finish

的官方文件

“无论何时用户再次启动其任务(在主屏幕上选择任务),是否应关闭(完成)活动的现有实例 - 如果应该关闭,则为”true“,并且”false“ “如果没有。默认值为”false“。”

答案 1 :(得分:1)

我建议您使用自定义快捷方式也可以ActivityA启动,但在Intent中传递额外的额外。在ActivityA.onNewIntent()ActivityA.onCreate()中,您可以检查额外是否存在,如果是,请启动ActivityB并致电finish()。这应该会给你你想要的行为。

例如,在创建自定义快捷方式时添加此项:

shortcutIntent.putExtra("customShortcut", true);

并将此代码放在onCreate()的{​​{1}}和onNewIntent()中:

ActivityA