每周重复Manager警报



我想每周做一项特定的任务。所以我用了一个报警管理器当用户单击按钮时发出警报管理器正在运行破解码工作正常:

       public void set_alarm(int reapte)
{
    Context context=getBaseContext();
    Calendar calendar=Calendar.getInstance();
//  calendar.set(Calendar.HOUR_OF_DAY, 20); // For 1 PM or 2 PM
    //calendar.set(Calendar.MINUTE, 41);
    Intent intent= new Intent(context, MyService.class);
    intent.putExtra("size", reapte);
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    PendingIntent pi = PendingIntent.getService(context, 0,
              intent ,PendingIntent.FLAG_UPDATE_CURRENT);
    AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
    am.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
                            AlarmManager.INTERVAL_DAY*7, pi);

    }

我遇到的问题。当用户单击时。Alarm Manager同时运行。下周就要开始了。我想从下周开始先运行闹钟。对不起,我的语言不好。

试试这个您可以设置开始报警的日期。

calendar.set(Calendar.DAY_OF_WEEK, 1);其中sunday=1,依此类推到sat=7

并在设置警报的当前时间前2分钟设置时间,因此它将在下周的同一天

我终于找到了答案

WEEK_OF_MONTH值介于1和4之间。

所以我使用以下代码:

    int week=calendar.get(Calendar.WEEK_OF_MONTH);
    int day=calendar.get(Calendar.DAY_OF_WEEK);
    int hour=calendar.get(Calendar.WEEK_OF_YEAR);
    int minute= calendar.get(Calendar.MINUTE);
    calendar.set(Calendar.DAY_OF_WEEK, day);
    calendar.set(Calendar.HOUR_OF_DAY, hour); 
    calendar.set(Calendar.MINUTE,minute);
    int next_week=week+1;
    if(next_week>4)
         next_week=1;
    calendar.set(Calendar.WEEK_OF_MONTH, next_week); 
   //other code

最新更新