2014-10-30 59 views
2

报警应该重复月度报警,每月在同一个月份重复一次,每月如此设置 就好像我在我的地方警报在10月31日,那么它应该重复31个月有31天,因为我们没有相同的天数每个月 我无法弄清楚这个警报的时间间隔,请帮助我如何弄清楚这是什么INTERVAL_Value必须是或如何处理它以另一种方式android重复闹铃,应该每月重复一次,并在每个月的当天重复,等

alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_Value, alarmIntent); 
+0

看看[这个](http://stackoverflow.com/questions/7568233/how-to-implement-yearly-and-monthly-repeating-alarms)有帮助。 – 2014-10-30 05:36:22

+0

我想通过另一种方式发布,作为一个喉咙,我认为这是它可以工作 – mushahid 2014-10-30 05:56:14

回答

1

我们可以从源收到currentMonth值,它是一个整数

if (currentMonth == Calendar.JANUARY || currentMonth == Calendar.MARCH || currentMonth == Calendar.MAY || currentMonth == Calendar.JULY 
      || currentMonth == Calendar.AUGUST || currentMonth == Calendar.OCTOBER || currentMonth == Calendar.DECEMBER){ 
    alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY * 31, alarmIntent); 
    } 
    if (currentMonth == Calendar.APRIL || currentMonth == Calendar.JUNE || currentMonth == Calendar.SEPTEMBER 
      || currentMonth == Calendar.NOVEMBER){ 
     alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY * 30, alarmIntent); 
     } 


    if (currentMonth == Calendar.FEBRUARY){//for feburary month) 
     GregorianCalendar cal = (GregorianCalendar) GregorianCalendar.getInstance();  
      if(cal.isLeapYear(year)){//for leap year feburary month 
       alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY * 29, alarmIntent); 
      } 
      else{ //for non leap year feburary month 
       alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY * 28, alarmIntent); 
      } 
    } 
0

您应该使用cal.getActualMaximum(Calendar.DAY_OF_MONTH));。 这给你每个月的最大日期,不管月份。