getLongExtra always return default value using PendingIntent

1.9k Views Asked by At

I want to pass a long value using a PendingIntent something like this

Intent intentForPending = new Intent(context, NewBlaBlaActivity.class);
long courseId = 15252;
intentForPending.putExtra("courseId", courseId);
intentForPending.putExtra("isFromPushNotification", true);

PendingIntent contentIntent = PendingIntent.getActivity(context, 0, intentForPending, 0);

NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(
        context).setSmallIcon(R.drawable.appicon)
        .setContentTitle("BlaBla")
        .setStyle(new NotificationCompat.BigTextStyle().bigText(message))
        .setContentText(message)
        .setAutoCancel(true);


mBuilder.setContentIntent(contentIntent);
mNotificationManager.notify(NOTIFICATION_ID, mBuilder.build());

And get the value as below

Intent intent = getIntent();
if(intent.getBooleanExtra("isFromPushNotification", false)) {
    long courseId = intent.getLongExtra("courseId", 0);     
}

But I always get 0 from the intent. The weird thing is while I can get the boolean value with 'isFromPushNotification' key from the intent, I cannot get the long value from the same intent.

This drives me crazy. As you can see, it is a PushNotification and this code runs when I tap on the notification.

I tried all the way I can get from the forums and questions in stackoverflow, adding L suffix on def and original value on long objects. But I think PendingIntent is wet blanket.

I am waiting for your godlike advices. Thanks!

1

There are 1 best solutions below

1
On BEST ANSWER

If you are going to use extras with a PendingIntent, always use a flag in the last parameter of the PendingIntent factory method (getActivity() in your case). Probably you want FLAG_UPDATE_CURRENT, to indicate to replace any existing PendingIntent contents with the new extras.