Android:从 'recent applications' 开始应用程序以 Intent 中使用的最后一组额外内容启动它

标签 android android-activity android-intent extras

这里有点让我困惑的问题:

我有一个主屏幕小部件,单击它会启动我的主应用程序 Activity,并在 Intent 中添加一些额外内容:

Intent start = new Intent(context, Main.class);
start.putExtra("action", "showXYZ");
start.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(start);

一切正常,它启动了我的 Activity ,并且我的 Activity 收到了预期的额外费用。它处理这些额外内容并启动另一个 Activity 。

一旦用户点击主屏幕小部件并以这种方式启动主 Activity ,通过“最近的应用程序”方法(按住“主页”键)进入应用程序将启动带有附加功能的主 Activity - 导致我不希望发生的处理(并导致第二个 Activity 打开,而不是仅显示主要 Activity )。

有什么解决方法吗?从“最近的应用程序”方法启动应用程序时,我想简单地启动 Main Activity ,而无需最后一组额外内容。

非常感谢您的帮助! r3mo

注意:我是安卓1.5

编辑:

在这里找到了解决方法: Android keeps caching my intents Extras, how to declare a pending intent that keeps fresh extras?

我将为小部件触发的 Intent 添加时间戳,并检查 Main.java 中的时间戳是否最新。如果是,我将继续处理。如果没有,我将只显示 Main.java Activity 。

很想知道是否有任何官方解决方案。

最佳答案

正如 Martijn 所说,您可以使用设置了标志 FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY 的 Intent 检查您的应用程序是否打开,如下所示:

int flags = getActivity().getIntent().getFlags();       
if ((flags & Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY) != 0) {
    // The activity was launched from history
}

关于Android:从 'recent applications' 开始应用程序以 Intent 中使用的最后一组额外内容启动它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4866149/

相关文章:

android - Bluetooth LE 扫描有时找不到设备

android - 如何创建一个html文件来存储离线数据

Android SQlite,如何将两个值传递给另一个 Activity ?

android - broadcastreceiver onReceive问题 ACTION_MEDIA_BUTTON Android

android - 如何将用户定义的 Intent 限制在您的应用程序中

android - 如何区分国家代码和联系电话

Android:如何从服务调用 startResolutionForResult?

Android - 使我的应用程序可从应用程序列表和 "Share"菜单启动

java - 尝试将 admob 合并到我的 android 应用程序时出错

Android - MEDIA ERROR UNKNOWN -1 通常意味着什么