0

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

2 Answers 2

1

i have find the solution,

Download this library and add your project,

https://github.com/JakeWharton/NotificationCompat2/downloads

import android.app.Activity; import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import com.example.notification.R.id; import com.jakewharton.notificationcompat2.NotificationCompat2; public class MainActivity extends Activity { Button btn; int i = 0; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn = (Button) findViewById(id.button1); btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // Click button 3-4 times and there will be natification and // click one of them notificationforChat("Message" + i,"sender" + i,i); //notificationforChat("sender" + i, "Message" + i, i); i++; } }); } public void notificationforChat(String message, String sender,int notificationID) { Bundle bundle = new Bundle(); bundle.putString("key", message); NotificationManager notifManager = (NotificationManager) this .getSystemService(this.NOTIFICATION_SERVICE); int uniqueInteger = notificationID;// create a unique Integer int icon = R.drawable.ic_launcher; NotificationCompat2.Builder mNotification = new NotificationCompat2.Builder( this).setSmallIcon(icon).setContentTitle(sender) .setContentIntent(getPendingIntent(bundle, uniqueInteger)); mNotification.setDefaults(Notification.DEFAULT_LIGHTS | Notification.DEFAULT_SOUND | Notification.DEFAULT_VIBRATE); mNotification.setAutoCancel(true); notifManager.notify(uniqueInteger, mNotification.build()); } private PendingIntent getPendingIntent(Bundle bundle, int rc) { Intent notificationIntent = new Intent(MainActivity.this, UserChatActivity.class); notificationIntent.putExtras(bundle); return PendingIntent.getActivity(this, rc, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT); } } 

Then on the userChatActivity,

import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.util.Log; public class UserChatActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); Intent intent = getIntent(); String key = intent.getStringExtra("key"); Log.v("notifica",key); } } 
Sign up to request clarification or add additional context in comments.

6 Comments

Thanks for the reply. But how can I get the id of the notification on notification clicks. ?? How will it recognise the id now from the ArrayList?
How it will be get that which notification is clicked??? i. suppose there are two notifications. One is from user A and other is from user B. How will one get that which one is clicked????
Yu can changeyour method parameters => public void notificationforChat(CharSequence message, String toJid, int notificationID,String UserName)
You are not at all getting my point dear. When a notification arrives ( its value is saved in bundle- jid value ) based upon the jid value it opens the new activity. Now if another notification arrives and the old one is still dere then it simply updates the bundle so here when I click on any of the notifications I am redirected latest bundle value page. Now please help me in this. How to get which notification is clicked on the other activity where it gets the value from the bundle
Did i misunderstand your question ?
|
0

It appears that the latest one is always what would be opened, is this not what you wanted?

Would you rather there be 2 separate notifications in the case you described? One for :A and one for :B ?

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.