如何在Android中为每个特定日期设置重复警报

时间:2014-03-03 16:29:11

标签: android calendar alarmmanager alarm repeat

我正在使用android上的闹钟应用程序。我确实制作了标准的一次性警报,并且我在特定时间每天重复。我搜索过每一个问题,但我没有看到任何关于此问题。

我希望每个特定的日子都像“每个星期五晚上10点”那样做。但我看到有趣的事情,它在4月之间的3月份没有正常工作。

这个代码块永远都可以正常工作。

  if(everyday)
 {
 calSet.set(Calendar.HOUR_OF_DAY, hour);
 calSet.set(Calendar.MINUTE, minute);
 calSet.set(Calendar.SECOND,0);
 PendingIntent pi = PendingIntent.getBroadcast(this, 0, intent,PendingIntent.FLAG_UPDATE_CURRENT);
        alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);   
        alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,calSet.getTimeInMillis(),AlarmManager.INTERVAL_DAY, pi);
    tAlrm.setText(calSet.getTime()+"\n");
  }

我在每个星期五使用以下代码。

该代码工作得很好,但它有一些有趣的问题。 (意思是今天27/02/14 thursday-feb 15:20) 我每个星期五都在准备。第一个闹钟日是28.02.14,所以明天它每个星期五都能完美运作。这就像在三月看起来完美无缺。但是当日期到了四月时它再也不起作用了。它在4月的任何一个小时都在星期六工作。我不明白例如它在2015年的每个星期五工作。如果我解决了问题,那么我将在每个特定的日子(每个星期日,每个星期一......)做。

或者,如果您对此有任何想法,我想听听。对不起我的英语。

  if(friday){
        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.DAY_OF_WEEK,Calendar.FRIDAY);
        calendar.set(Calendar.HOUR_OF_DAY, hour);
        calendar.set(Calendar.MINUTE, minute);
        calendar.set(Calendar.SECOND,0);

  Long interval = calendar.getTimeInMillis();

        PendingIntent pi2 = PendingIntent.getBroadcast(this, 2, intent,0);  
        AlarmManager alarmManager2 = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
        alarmManager2.setRepeating(AlarmManager.RTC_WAKEUP,interval,AlarmManager.INTERVAL_DAY*7, pi2);
         tAlrm.setText(calendar.getTime()+"pzts\n");
    }

0 个答案:

没有答案