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”会记住启动任务的意图——可能来自通知、启动器图标或其他。我错误地认为,您的问题在于区分由触发的意图
通知和由启动器图标触发的通知(如历史记录所示)。如果您想区分历史记录中记录的通知
-启动的意图
和通知
-启动的意图
,请使用标记历史记录中的活动
(如您在回答中所述)或重新思考您为什么关心这些差异。