在选定日期运行警报

时间:2015-07-24 00:43:16

标签: android alarmmanager

我想在选择日期,时间和分钟时开始闹铃。

到目前为止,这是我的代码:

public void startAt() {
        Intent alarmIntent = new Intent(backgroundApplication.this, AlarmReceiver.class);
        pendingIntent = PendingIntent.getBroadcast(backgroundApplication.this, 0, alarmIntent, PendingIntent.FLAG_UPDATE_CURRENT);
        AlarmManager manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
        Calendar calendar = Calendar.getInstance();
        calendar.setTimeInMillis(System.currentTimeMillis());
        calendar.set(Calendar.DAY_OF_WEEK,calendar.WEDNESDAY);
        calendar.set(Calendar.HOUR_OF_DAY,7);
        calendar.set(Calendar.MINUTE,35);
        manager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
                1000 * 5, pendingIntent);
    }

对于我设置DAY_OF_WEEK的例子是今天(星期五),它的效果很好。但是当我把它改成星期三,或者在星期五之前的其他日子,它仍在运行。

在选定的日子里还有其他方式可以开始吗?

1 个答案:

答案 0 :(得分:0)

根据文档http://developer.android.com/reference/android/app/AlarmManager.html#setRepeating%28int,%20long,%20long,%20android.app.PendingIntent%29,第二个参数是触发时间(以毫秒为单位),如果将其设置为过去的时间,则会立即触发警报。如果您希望警报仅从下周三开始,那么您必须使用calendar.add(Calendar.WEEK_OF_MONTH, 1)将日历时间提前到下周三。顺便说一下,在您的代码中,您不需要calendar.setTimeInMillis(System.currentTimeMillis())Calendar.getInstance()默认会返回当前时间。您还应该使用静态字段Calendar.WEDNESDAY