无法打开第二个通知

时间:2018-04-21 11:50:49

标签: android push-notification notifications android-notifications

我想在一个活动中使用不同的帖子ID打开不同的文章,我通过通知发送。我可以点击通知打开一个帖子,但打开相同的活动我无法打开或处理第二个通知。

    public void onMessageReceived(RemoteMessage remoteMessage) {
    sharedPref = new SharedPref(this);
    if (sharedPref.getNotification()) {
        // play vibration
        if (sharedPref.getVibration()) {
            ((Vibrator) getSystemService( Context.VIBRATOR_SERVICE)).vibrate(VIBRATION_TIME);
        }
        RingtoneManager.getRingtone(this, Uri.parse(sharedPref.getRingtone())).play();
        JSONObject json = null;

        if (remoteMessage.getData().size() > 0) {
            Map<String, String> data = remoteMessage.getData();
            FcmNotif fcmNotif = new FcmNotif();
            fcmNotif.setTitle(data.get("title"));
            fcmNotif.setPosttitle( data.get("posttitle"));
            fcmNotif.setPost_id(data.get("post_id"));
            fcmNotif.setPost_slug( data.get( "post_slug" ) );
            fcmNotif.setCat_name(data.get("cat_name"));
            fcmNotif.setType(data.get("type"));
            if(!data.get("cat_name").equals("No Notification"))
            {
                displayNotificationIntent(fcmNotif);
            }
        }
    }
}

private void displayNotificationIntent(FcmNotif fcmNotif) {
    Intent intent = new Intent(this, MainActivity.class);
    if (fcmNotif.getPost_id() != "tnd") {
        intent = new Intent(this, PostDetails.class);
        intent.putExtra( "PostId",fcmNotif.getPost_id());
        intent.putExtra( "type",fcmNotif.getType() );
        intent.putExtra( "PostSlug",fcmNotif.getPost_slug() );
        intent.putExtra("CategoryName",fcmNotif.getCat_name());

    }

    PendingIntent pendingIntent = PendingIntent.getActivity(this, (int) System.currentTimeMillis(), intent, 0);

    NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
    builder.setContentTitle(fcmNotif.getTitle());
    builder.setStyle(new NotificationCompat.BigTextStyle().bigText(fcmNotif.getPosttitle()));
    builder.setContentText(Html.fromHtml(fcmNotif.getPosttitle()));
    builder.setSmallIcon( R.mipmap.custom_icon);
    builder.setDefaults( Notification.DEFAULT_LIGHTS);
    if ( Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN)
    {
         builder.setPriority(Notification.PRIORITY_HIGH);
    }
    builder.setContentIntent(pendingIntent);
    builder.setAutoCancel(true);
    NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
    int unique_id = (int) System.currentTimeMillis();
    notificationManager.notify(unique_id, builder.build());
}

注意: 我尝试过使用intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);,它可以轻松打开所有通知,但是当按下HOME按钮并从抽屉重新打开应用程序时,它会打开第一个通知帖子,而不是最后打开一个。

和XML很简单`

        android:name=".PostDetails"
        android:label="@string/back"
        android:parentActivityName=".AllCategoryList"
        android:screenOrientation="portrait"/>
    <activity`

1 个答案:

答案 0 :(得分:0)

终于得到了解决方案:

Intent backIntent = new Intent(this, HomeActivity.class);
                backIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
Intent notificationIntent = new Intent(this, NextActivity.class);

                final PendingIntent pendingIntent = PendingIntent.getActivities(this, 1,
                        new Intent[] {backIntent, notificationIntent}, PendingIntent.FLAG_ONE_SHOT);

from ans from diffrent question of @Jitendra ramoliya