我想在每个月的第一个星期四发出警报通知。
am.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(),AlarmManager.INTERVAL_DAY*30, sender);
我不能使用上面的代码,因为并非所有月份都有30天,有没有办法实现这个目标?
这是否表示每个月的第一个星期四?
cal.set(Calendar.DAY_OF_WEEK, 5); // Thursday
cal.set(Calendar.DAY_OF_WEEK_IN_MONTH, 1); // Thursday
由于
修改
private void createThursayScheduledNotification() {
Calendar calendar3 = Calendar.getInstance();
calendar3.set(Calendar.DAY_OF_WEEK, 5); // Thursday
calendar3.set(Calendar.DAY_OF_WEEK_IN_MONTH, 1); // First Thursday of
// Each Month
// Thursday
calendar3.set(Calendar.HOUR_OF_DAY, 9);
calendar3.set(Calendar.MINUTE, 0);
calendar3.set(Calendar.SECOND, 0);
calendar3.set(Calendar.AM_PM, Calendar.AM);
AlarmManager alarmMgr = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmMgr.set(AlarmManager.RTC_WAKEUP,
calendar3.getTimeInMillis(), pendingIntent3); // every first Thursday
createThursayScheduledNotification();
}
答案 0 :(得分:1)
由于setRepeating()
不再与Android 4.4相同,因此最佳解决方案是使用setExact()
(在Android 4.4上)或set()
(在Android 4.3及更低版本上) 。设置下个月第一个星期四的闹钟事件。作为处理该事件的一部分,请为下个月的第一个星期四设置警报。等等。
答案 1 :(得分:0)
你可以查看这篇文章
How to implement yearly and monthly repeating alarms?
如果你在至少19版上使用alarmmanager,你可以看看setWindow()