Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Multiple notifications and only show the first one in Android

I'm creating an app that has to show more than one notification. I was looking for information and I use this code in class:

Notification noti = new NotificationCompat.Builder(this)

I can show more than one notifications on the bar, but the problem is that when I click on it, it only shows the first one. I think it's because the id that the pending intent obtain is always the same, but I send a different one.

Notification Activity: Show a new notification when I click the button.

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.support.v4.app.NotificationCompat;
import android.util.Log;
import android.view.View;

public class NotificationActivity extends Activity {
int notificationID = 1;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_notification_example);
}

public void onClick(View v){
    displayNotification();
}

protected void displayNotification(){
    Intent i = new Intent(this, NotificationView.class);
    i.putExtra("notificationID", notificationID);

    PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, i, 0);
    NotificationManager nm = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);

    CharSequence ticker ="Display";
    CharSequence contentTitle = "Title";
    CharSequence contentText = "Description";
    Notification noti = new NotificationCompat.Builder(this)
                        .setContentIntent(pendingIntent)
                        .setTicker(ticker)
                        .setContentTitle(contentTitle)
                        .setContentText(contentText)
                        .setSmallIcon(R.drawable.ic_launcher)
                        .addAction(R.drawable.ic_launcher, ticker, pendingIntent)
                        .setVibrate(new long[] {100, 250, 100, 500})
                        .build();
    Log.d("Send Notification", "id: "+notificationID);
    nm.notify(notificationID, noti);
    notificationID++;
}
}

As you can see i increase the notificationID every time i click the button for send a different id.

Notification View: Shows the id of the notification.

import android.app.Activity;
import android.app.NotificationManager;
import android.os.Bundle;
import android.widget.TextView;

public class NotificationView extends Activity {
TextView txt;
@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.notification);
    txt= (TextView) findViewById(R.id.txt1);
    NotificationManager nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);

    txt.setText("Notification ID: "+getIntent().getExtras().getInt("notificationID"));
    // Cancel notification
    nm.cancel(getIntent().getExtras().getInt("notificationID"));        
}
}

Hhere only shows the id of the notification, but it's always 1.

Any idea about what happend? I'm testing it on a 2.3 device.

like image 954
Fernando Avatar asked May 31 '13 11:05

Fernando


People also ask

How do I manage multiple notifications on Android?

Set the unique id to let Notification Manager knows this is a another notification instead of same notification. If you use the same unique Id for each notification, the Notification Manager will assume that is same notification and would replace the previous notification.


2 Answers

just put in order to solve the issue:

int num = (int) System.currentTimeMillis();

PendingIntent resultPendingIntent=PendingIntent.getActivity(this,num,resultIntent,Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);

mNotificationManager.notify(num, mNotifyBuilder.build());*
like image 129
elias Avatar answered Sep 28 '22 21:09

elias


1) PendingIntent pendingIntent = PendingIntent.getActivity(this, 1, i, 0); 
  ..............Your code ........................  
    nm.notify(1, noti); 
2)PendingIntent pendingIntent2 = PendingIntent.getActivity(this, 2, i, 0);  
  ..............Your code ........................  
    nm2.notify(2, noti);  
3)PendingIntent pendingIntent3 = PendingIntent.getActivity(this, 3, i, 0);  
  ..............Your code ........................  
    nm3.notify(3, noti); 
4)................same as above  
5)................same as above 
like image 36
AnilPatel Avatar answered Sep 28 '22 23:09

AnilPatel