我正在创建一个类似于以下内容的通知:
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);
此处的关键是通知的Intent上的额外数据。一旦我点击通知并显示SomeActivity,它就会显示活动,并且可以获得额外的数据。
但是,如果我退出应用程序,按住主页按钮直到最近的活动列表出现,并选择再次打开应用程序,仍然会传递额外的数据。如果应用程序是通过通知打开的,而不是来自最近的活动列表,我是否可以通过仅传递此数据?
答案 0 :(得分:2)
看起来我可以查看是否从最近的活动对话框启动了活动:
if((getIntent().getFlags() &
Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY) != 0) {
// ignore extras
}
else {
// do not ignore extras
}
我不知道这是不是最好的方式,但确实有效。
答案 1 :(得分:1)
使用其他Intent
。例如,您可以为某些自定义操作字符串添加<intent-filter>
,并将其用于基于Notification
的{{1}}。换句话说,您无法更改最近的活动对话框,但您可以改变冲突的一面。
答案 2 :(得分:1)
尝试:
int NOTIFICATION_CODE = 1;
PendingIntent contentIntent =
PendingIntent.getActivity(this,
NOTIFICATION_CODE,
ni,
PendingIntent.FLAG_UPDATE_CURRENT |
PendingIntent.FLAG_ONE_SHOT
);
更改每个通知的NOTIFICATION_CODE值。