0

我的步骤:

  1. 启动器快捷方式启动 Activity A
  2. 点击主页按钮;
  3. 自定义快捷方式启动 Activity B
  4. 单击BACK按钮 - 向我显示 Activity A

但是当我单击自定义快捷方式时,我希望我所有的旧活动都关闭。我怎样才能做到这一点?

显现:

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

爪哇:

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);
}
4

2 回答 2

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” . 默认值为“假”。

于 2013-03-30T22:10:49.973 回答
1

我建议你也有你的自定义快捷方式 start ActivityA但在. In和 in你可以检查额外的是否存在,如果存在,则启动并调用。这应该给你你想要的行为。IntentActivityA.onNewIntent()ActivityA.onCreate()ActivityBfinish()

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

shortcutIntent.putExtra("customShortcut", true);

并将此代码放入onCreate()onNewIntent()ActivityA

if (getIntent().hasExtra("customShortcut")) {
    Intent intent = new Intent(this, B.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
    startActivity();
    finish();
    return;
}
于 2013-04-01T11:18:59.427 回答