大家好,我正在尝试设置多个 AlarmManager 不同的时间,并使用此代码
public void StartAppNotifications( String title ,int h ,int m ) {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, h);
calendar.set(Calendar.MINUTE, m);
calendar.set(Calendar.SECOND, 0);
if (!calendar.before(Calendar.getInstance())) {
Intent intent = new Intent(getApplicationContext(), AlertReceiver.class);
intent.putExtra("title", title);
PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 100, intent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent);
}
}
如果此方法被调用一次,它会起作用一次,但如果调用多次,它就不起作用 我想这样调用它
StartAppNotifications("alarm text" ,18 ,30);
最佳答案
来自doc关于 AlarmManager,当您设置使用相同待处理 Intent 的第二个警报时,它会替换原始警报
因此,您需要为每个重复闹钟使用不同的 PendingIntent,例如使用标志 PendingIntent.FLAG_ONE_SHOT
创建 PendingIntent
PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 100, intent, PendingIntent.FLAG_ONE_SHOT);
关于java - 如何设置多个AlarmManager的不同时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58537163/