Apparently, the PendingIntent.getActivity(...) factory method is simply re-using the old intent as an optimization, even if it is set to 0. To make sure this doesn't happen, pass the flag PendingIntent.FLAG_CANCEL_CURRENT like this:
PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
openIntent, PendingIntent.FLAG_CANCEL_CURRENT);