我需要从多个通知托盘中打开一个相同的活动,每个通知都会为该活动带来不同的数据
尝试通过将launchMode
设置为SingleTop
和SingleTask
来设置ACTIVITY_FLAGS
例如,如果服务器向同一活动返回了6条通知,那么,如果我单击任何通知,它将打开活动,其中包含从第一个通知到移动设备的通知,而不是全部通知。
清单代码段
<activity android:launchMode="singleTop" android:name=".activity.EditAssuranceActivity" />
Notification Receiver活动中的代码段(命中EditAssuranceActivity)
if (targetActivity.equals("events")) {
intent = new Intent(this, ViewEventActivity.class);
intent.putExtra("page_title", Message);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
} else if (targetActivity.equals("assurances")) {
intent = new Intent(this, EditAssuranceActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
intent.putExtra("page_title", Message);
}
else {
intent = new Intent(this, MainActivity.class);
}
intent.putExtra("_id", parameter_id.get("post_id"));
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0 /* Request code */, intent,
PendingIntent.FLAG_ONE_SHOT);
答案 0 :(得分:0)
在将PendingIntent.getActivity(this, 0 /* Request code */, intent,PendingIntent.FLAG_ONE_SHOT);
传递的'requestCode'值设置为某个随机数而不是0之后,我得到了预期的解决方案。
来自服务器的不同通知会遍历相同的代码,但是每次'requestCode'都会获得不同的随机数,因此在单击每个通知后,相同的活动将打开并带有由该特定通知带来的值。
以前的代码
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0 /* Request code */, intent,PendingIntent.FLAG_ONE_SHOT);
修改后的代码
Random random1 = new Random();
int rand1 = random1.nextInt(1000);
PendingIntent pendingIntent = PendingIntent.getActivity(this, rand1 /* Request code */, intent,PendingIntent.FLAG_ONE_SHOT);