Подтвердить что ты не робот

Несколько уведомлений и отображать только первое в Android

Я создаю приложение, которое должно показывать более одного уведомления. Я искал информацию, и я использую этот код в классе:

Notification noti = new NotificationCompat.Builder(this)

Я могу показать более одного уведомления на панели, но проблема в том, что когда я нажимаю на него, он показывает только первое. Я думаю, потому что идентификатор, который получает ожидающее намерение, всегда один и тот же, но я отправляю другой.

Активность уведомления: Показывать новое уведомление, когда я нажимаю кнопку.

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++;
}
}

Как вы можете видеть, я увеличиваю уведомлениеID каждый раз, когда нажимаю кнопку, чтобы отправить другой идентификатор.

Просмотр уведомлений: Показывает идентификатор уведомления.

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"));        
}
}

Здесь показан только идентификатор уведомления, но всегда 1.

Есть идеи о том, что случилось? Я тестирую его на устройстве 2.3.

4b9b3361

Ответ 1

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 

Ответ 2

просто для решения проблемы:

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

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

mNotificationManager.notify(num, mNotifyBuilder.build());*