I got my mistake. For setting multiple alarms I need to create my PendingIntent s with different requestCode. Below is my updated source code:
ReminderAlarmReceiver.java
public class ReminderAlarmReceiver extends BroadcastReceiver {
public static final String REMINDER = "reminder";
@Override
public void onReceive(Context context, Intent intent) {
PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, REMINDER);
// Acquire the lock
wakeLock.acquire();
Intent service = new Intent(context, ReminderService.class);
service.putExtra("id", intent.getStringExtra("id"));
service.putExtra("subject", intent.getStringExtra("subject"));
service.putExtra("description", intent.getStringExtra("description"));
context.startService(service);
// Release the lock
wakeLock.release();
}
public void setReminder(Context context, List<PlannerData> planner) {
SimpleDateFormat sdf = new SimpleDateFormat(AttributeSet.Constants.DATE_FORMAT);
Calendar calendar = Calendar.getInstance();
for (PlannerData data : planner) {
try {
Date d = sdf.parse(data.getReminderDate().trim());
calendar.setTime(d);
long when = calendar.getTimeInMillis(); // Notification Time
AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(context, ReminderAlarmReceiver.class);
intent.putExtra("id", String.valueOf(planner.indexOf(data)));
intent.putExtra("subject", data.getSubject());
intent.putExtra("description", data.getDescription());
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, planner.indexOf(data), intent, PendingIntent.FLAG_UPDATE_CURRENT);
am.set(AlarmManager.RTC_WAKEUP, when, pendingIntent);
} catch (ParseException e) {
e.printStackTrace();
}
}
}
}
Got the solution from here: Android Set Multiple Alarms!