首页 > 解决方案 > 我希望使用我在 Android 中通过数组传递的警报管理器来通知不同时间

问题描述

到目前为止我试过这个,但我的通知只在数组列表中最后一次有效。而我需要在数组中的所有时间通知。

 int[]hour={5,11,18,18,19};
 int[]min={15,0,50,52,05};
for(int i=0;i<5;i++){
                    Calendar calendar = Calendar.getInstance();
                    calendar.set(Calendar.HOUR_OF_DAY, hour[i]);
                    calendar.set(Calendar.MINUTE, min[i]);
                    calendar.set(Calendar.SECOND, 00);
                    Date date =calendar.getTime();
                    Notification2(date);
}
 @RequiresApi(api = Build.VERSION_CODES.KITKAT)
    private void Notification2(Date b) {
        AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
        Intent intent = new Intent(this, AlertReceiver2.class);
        Random random = new Random();
        int j = random.nextInt(9999 - 1000) + 1000;
        PendingIntent pendingIntent = PendingIntent.getBroadcast(this, j, intent, 0);
        alarmManager.setExact(AlarmManager.RTC_WAKEUP, b.getTime(), pendingIntent);
    }

MY Alertreciever 类

public class AlertReceiver2 extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Random random = new Random();
        int m = random.nextInt(9999 - 1000) + 1000;
        NotificationHelper2 notificationHelper2 = new NotificationHelper2(context);
        NotificationCompat.Builder nb = notificationHelper2.getChannelNotification();
        notificationHelper2.getManager().notify(m, nb.build());
    }

标签: android

解决方案


尝试为您的最后一个参数添加一些标志PendingIntent,例如PendingIntent.FLAG_ONE_SHOT

PendingIntent pendingIntent = PendingIntent.getBroadcast(this, j,
    intent, PendingIntent.FLAG_ONE_SHOT);

推荐阅读