Android 通知和应用程序历史记录冲突的PendingEvent

Android 通知和应用程序历史记录冲突的PendingEvent,android,Android,我正在创建一个类似于以下内容的通知: Intent ni = new Intent(this, SomeActivity.class); ni.putExtra("somestring", "somedata"); PendingIntent contentIntent = PendingIntent.getActivity(this, 0, ni, PendingIntent.FLAG_UPDATE_CURRENT|P

我正在创建一个类似于以下内容的通知:

    Intent ni = new Intent(this, SomeActivity.class);
    ni.putExtra("somestring", "somedata");
    PendingIntent contentIntent = 
        PendingIntent.getActivity(this, 0, ni, 
                PendingIntent.FLAG_UPDATE_CURRENT|PendingIntent.FLAG_ONE_SHOT);
    Context context = getApplicationContext();

    notification.setLatestEventInfo(context, 
            res.getString(R.string.app_name), 
            text, contentIntent);
这里的关键是通知意图的额外数据。一旦我点击通知,它会显示一些活动,它会显示活动,额外的数据可用


但是,如果我退出应用程序,按住“主页”按钮直到出现“最近的活动”列表,然后选择再次打开应用程序,则仍会传递额外的数据。只有通过通知打开应用程序,而不是从最近的活动列表中打开应用程序时,我才能传递此数据吗?

使用不同的
意图。例如,您可以为某些自定义操作字符串添加一个
,并将其用于基于
挂起内容的
通知。换言之,您不能更改“最近的活动”对话框,但可以更改您的冲突方。

看起来我可以通过以下方式检查活动是否从“最近的活动”对话框启动:

if((getIntent().getFlags() & 
        Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY) != 0) {
    // ignore extras
}
else {
    // do not ignore extras
}
我不知道这是否是最好的方法,但它确实有效。

尝试以下方法:

int NOTIFICATION_CODE = 1;

PendingIntent contentIntent = 
          PendingIntent.getActivity(this, 
                                    NOTIFICATION_CODE, 
                                    ni,
                                    PendingIntent.FLAG_UPDATE_CURRENT | 
                                    PendingIntent.FLAG_ONE_SHOT
                                   );

更改每个通知的通知代码值。

现在“最近的活动”对话框只显示新的挂起内容。。。这意味着我也有同样的问题-最近的“活动”对话框仍然使用相同的额外数据启动相同的活动。只有当相关活动是从
通知启动的时候才会发生这种情况。我想我不明白。即使我启动一个完全不同的活动,然后从中启动我的主要活动,我仍然需要使用额外的逻辑,它们仍然会传递给新的活动。我尝试将此“LauncherActivity”排除在Recents之外,但这只会将整个应用程序排除在外,即使在清单中指定了不排除的主要活动。“history”会记住启动任务的意图——可能来自
通知、启动器图标或其他。我错误地认为,您的问题在于区分由
触发的
意图
通知和由启动器图标触发的通知(如历史记录所示)。如果您想区分历史记录中记录的
通知
-启动的
意图
通知
-启动的
意图
,请使用
标记历史记录中的活动
(如您在回答中所述)或重新思考您为什么关心这些差异。