android中未显示多个通知

android中未显示多个通知,android,notifications,Android,Notifications,在我的android应用程序中,我愿意在某一天显示多个通知,因为我使用的是Alarm Manager和广播接收器,问题是当我使用Alarm时,它工作正常,但当我添加通知生成器来显示通知时,它不工作 这是我的主要活动 public static final String ACTION_ONE = "Hello, Test Message 1"; public static final String ACTION_TWO = "Hello, Test Message 2"; @Override

在我的android应用程序中,我愿意在某一天显示多个通知,因为我使用的是Alarm Manager和广播接收器,问题是当我使用Alarm时,它工作正常,但当我添加通知生成器来显示通知时,它不工作

这是我的主要活动

  public static final String ACTION_ONE = "Hello, Test Message 1";
public static final String ACTION_TWO = "Hello, Test Message 2";

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

    AlarmManager alarmManager1 = (AlarmManager) getSystemService(ALARM_SERVICE);
    Calendar cal = Calendar.getInstance();
    cal.setTimeInMillis(System.currentTimeMillis());

    Intent myIntent1 = new Intent(this, AlarmBroadCustReciver.class);
    myIntent1.setAction(ACTION_ONE);
    PendingIntent pendingIntent1 = PendingIntent.getBroadcast(this, 1253, myIntent1,
            PendingIntent.FLAG_UPDATE_CURRENT);
    // Set the time for first alarm here
    cal.set(2015, 10, 20, 15, 55);
    alarmManager1.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), pendingIntent1);

    Intent myIntent2 = new Intent(this, AlarmBroadCustReciver.class);
    myIntent2.setAction(ACTION_TWO);
    PendingIntent pendingIntent2 = PendingIntent.getBroadcast(this, 1263, myIntent2,
            PendingIntent.FLAG_UPDATE_CURRENT);
    // Set the time for second alarm here
    cal.set(2015, 10, 20, 15, 56);
    alarmManager1.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), pendingIntent2);
    // In this way set time for all the rest of the alarms
这是广播接收机

public class AlarmBroadCustReciver extends BroadcastReceiver {

public static final String ACTION_ONE = "Hello, welcome to the Server1";
public static final String ACTION_TWO = "Hello, welcome to the Server2";

@Override
public void onReceive(Context context, Intent intent) {
    NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
    NotificationCompat.Builder builder = new NotificationCompat.Builder(context);
    builder.setLargeIcon(BitmapFactory.decodeResource(context.getResources(), R.mipmap.ic_launcher));
    builder.setContentTitle(context.getString(R.string.app_name));
    if (intent.getAction().equalsIgnoreCase(ACTION_ONE)) {
        builder.setContentText("Alarm one");
    } else {
        builder.setContentText("Alarm two");
    }
    Notification notification = builder.build();
    int notificationID = 0;
    notificationManager.notify(notificationID, notification);

您需要为每个通知传递不同的通知id。如果您传递相同的id(即,在您的情况下为0),现有通知将使用新数据更新。
更改通知id:例如,使用一个变量并递增它。notificationid++

我有一个类似的问题,我正在用不同的ID创建多个通知,但是,当我单击其中一个时,只有第一个打开了特定的屏幕,所有顺序通知都被忽略(单击它们没有做任何事,它们只是被取消)。然后我试着这样做:

intent.setAction(context.getPackageName() + "." + notificationId);
这意味着每个独特的通知也有其独特的意图,在这种情况下,意图不会被忽略,并且每个通知都会打开所需的屏幕。我必须注意,我的意图是相同的(例如NoteDetails.class),所以我想我必须以某种方式将它们分开……我很高兴它无论如何都能起作用。

对我来说是一个正确的方向

我只需要更改传递给AlarmManager的PendingEvent中的requestCode,因此它的值不同

旧代码:

PendingIntent pI = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
新代码:

PendingIntent pI = PendingIntent.getBroadcast(context, notificationId, intent, PendingIntent.FLAG_UPDATE_CURRENT);

我的问题是,即使第一次通知也没有显示。我是否可以使用一些示例检查此示例并实现上述逻辑。我使用了不同的requestCodes,但将标志设置为0。将其设置为
pendingent.FLAG\u UPDATE\u CURRENT
解决了问题。