您如何使 Android“主页”快捷方式绕过它指向的应用程序的历史记录?

Posted

技术标签:

【中文标题】您如何使 Android“主页”快捷方式绕过它指向的应用程序的历史记录?【英文标题】:How do you make an Android "Home" shortcut bypass the app it's point to's history? 【发布时间】:2010-11-01 23:11:25 【问题描述】:

我有一个应用程序,可让您创建指向特定Activity 的主页“快捷方式”。事实证明,我的一些用户会使用该应用程序,点击主页键去做其他事情,然后使用其中一个快捷方式跳回该活动。由于应用程序仍在内存中,它只是在其他应用程序之上打开新的Activity,“返回”键会将它们带回整个历史记录。我希望发生的是,如果他们使用快捷方式来有效地终止历史记录并让后退键退出应用程序。有什么建议吗?

【问题讨论】:

【参考方案1】:

首先,在 Manifest 中设置taskAffinity,使Activity 作为不同的“任务”运行:

<activity
        android:taskAffinity="" 
        android:name=".IncomingShortcutActivity">
        <intent-filter>
            <action android:name="com.example.App.Shortcut"/>
            <category android:name="android.intent.category.DEFAULT"/>
        </intent-filter>
</activity>

然后,在构建快捷方式时,设置 FLAG_ACTIVITY_NEW_TASKFLAG_ACTIVITY_CLEAR_TOP 标志。比如:

// build the shortcut's intents
final Intent shortcutIntent = new Intent();
shortcutIntent.setComponent(new ComponentName(this.getPackageName(), ".IncomingShortcutActivity"));
shortcutIntent.putExtra(EXTRA_STOPID, Integer.toString(this.stop_id));
shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
final Intent intent = new Intent();
intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
// Sets the custom shortcut's title
intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, custom_title);
// Set the custom shortcut icon
intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, Intent.ShortcutIconResource.fromContext(this, R.drawable.bus_stop_icon));
// add the shortcut
intent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
sendBroadcast(intent);

【讨论】:

您能稍微澄清一下吗?代码应该去哪里,IncomingShortcutActivity?谁来处理广播?【参考方案2】:

尝试将Intent.FLAG_NEW_TASK 添加到 Intent。

【讨论】:

嗯,这至少让我了解了一些情况。谢谢

以上是关于您如何使 Android“主页”快捷方式绕过它指向的应用程序的历史记录?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的IE快捷方式每次开机都要重新创建一次啊!有啥办法使之不丢失

如何在emacs上设置班次快捷方式

Perl 如何查看 Windows 快捷方式指向的位置?

评论快捷方式 Android Studio

如何在Android模拟器中将应用程序的快捷方式添加到主屏幕

浏览器主页被篡改修改回来的集中方式(不全)