击中相同的活动从多个​​通知托盘中每个都有不同的数据

时间:2019-07-13 12:22:38

标签: java android android-studio android-activity android-manifest

我需要从多个通知托盘中打开一个相同的活动,每个通知都会为该活动带来不同的数据

尝试通过将launchMode设置为SingleTopSingleTask来设置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);

1 个答案:

答案 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);