I am showing notifications on a android device in some of my application. Each time notification is fired, a bundle saves the value and then on the click of the notification a new activity opens with the id in the bundle.
Now here I am in a problem that when one notification comes with id :A and simultaneously if the user gets the notification with id : B. Now it will cause the bundle value to - B. Now If any of the notification is clicked, then the page will be opened with the new notification value. This is the main problem that the id gets updated.
I require that on notification click right page should always open
sending notification
connection.addPacketListener(new PacketListener() { @Override public void processPacket(Packet packet) { // TODO Auto-generated method stub Message message = (Message) packet; senderName = packet.getFrom(); // new code mMessageItem = new MessageItemDataClass(); mMessageItem.isSendMessage = false; mMessageItem.messageText = message.getBody(); int alphaPOS = senderName.indexOf("@"); String subSenderName = senderName.substring(0, alphaPOS); refinedID = refineFromjId(packet.getFrom()); Random rand = new Random(); int randNotificationVal = rand.nextInt(1000); String notificationID = ""+randNotificationVal; while(idMap.containsValue(notificationID)){ randNotificationVal = rand.nextInt(1000); notificationID = ""+randNotificationVal; } if(!idMap.containsKey(refinedID)){ saveNotificationID(refinedID, notificationID); } if (UserChatActivity.checkPresence == true) { if (packet.getFrom().equalsIgnoreCase( refineFromjId(UserChatActivity.frienduserID) + "/Smack")) { UserChatActivity.messages.add(mMessageItem); } else { notificationforChat( subSenderName + ": " + message.getBody(), packet.getFrom().toString(), Integer.parseInt(idMap.get(refinedID)) ); } } else { notificationforChat( subSenderName + ": " + message.getBody(), packet .getFrom().toString(), Integer.parseInt(idMap.get(refinedID)) ); } public void notificationforChat(CharSequence message, String toJid, int notificationID) { int notificationCount = 1; String ns = Context.NOTIFICATION_SERVICE; NotificationManager mNotificationManager = (NotificationManager) getSystemService(ns); int icon = R.drawable.ic_launcher; CharSequence tickerText = message; long when = System.currentTimeMillis(); Notification notification = new Notification(icon, tickerText, when); //notification.number = notificationCount++; Context context = getApplicationContext(); CharSequence contentTitle = "Chat"; CharSequence contentText = message; Intent notificationIntentforChat = new Intent(this, UserChatActivity.class); notificationIntentforChat.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); notificationIntentforChat.putExtra("userNameVal", toJid); PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntentforChat, PendingIntent.FLAG_UPDATE_CURRENT); notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent); notification.flags |= Notification.FLAG_AUTO_CANCEL; notification.defaults = Notification.DEFAULT_ALL; mNotificationManager.notify(notificationID, notification); } UserChatActivity where bundle is checked
try { Bundle bundle = getIntent().getExtras(); if (bundle.getString("userNameVal") != null) { frienduserID = bundle.getString("userNameVal"); int index_of_Alpha = frienduserID.indexOf("@"); String subID = frienduserID.substring(0, index_of_Alpha); mtvChatTitle.setText(subID); //System.out.println("TRY == "+frienduserID); } } catch (Exception e1) { // TODO Auto-generated catch block e1.printStackTrace(); //System.out.println(""+frienduserID); } Thanks