警报管理器在一周的某一天设置警报

时间:2017-12-24 03:08:16

标签: java android

我有一个时间选择器对话框,我正在选择闹钟的时间。我正在设置我希望闹钟响起的那一天。如果我今天(星期六)指定“星期几”,则闹钟会在时间选择器上指定的正确时间内消失。如果我设置让我们说星期一,警报一旦设置就会立即响起。

如何,我可以安排闹钟在一周的某一天发生,而不是今天?

JAVA

timepickerdialog = new TimePickerDialog(AddAlarmActivity.this,
                        new TimePickerDialog.OnTimeSetListener() {

                            @Override
                            public void onTimeSet(TimePicker view, int hourOfDay,
                                                  int minute) {

                                Calendar ca = Calendar.getInstance();
                                ca.set(Calendar.HOUR_OF_DAY,hourOfDay);
                                ca.set(Calendar.MINUTE,minute);
                                ca.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
                                ca.set(Calendar.SECOND, 0);
                                ca.set(Calendar.MILLISECOND, 0);

                                AlarmManager alarmManager;
                                alarmManager = (AlarmManager) AddAlarmActivity.this.getSystemService(ALARM_SERVICE);
                                Intent intent;

                                intent = new Intent(AddAlarmActivity.this, AlarmReceiver.class);
                                pendingIntent = PendingIntent.getBroadcast(AddAlarmActivity.this, 0, intent, 0);
                                alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, ca.getTimeInMillis(), 1000*60*60*24, pendingIntent);

看来,如果我设定今天的那一天,或者根本没有,那就很有效。为什么它不会在当天不工作,我怎样才能让它工作?我转向SO因为我没有得到谷歌的任何帮助。

我也尝试了ca.set(Calendar.DAY_OF_WEEK,2);

谢谢

1 个答案:

答案 0 :(得分:1)

问题是您的日历默认设置为今天的闹钟日期,指定的时间小于执行闹钟的时间。时间已经过去了,即使已经晚了,它也会告诉你。  例如,您在晚上7:00运行代码,但日历的时间设置为下午6:50。如果您希望从明天开始触发警报,请将其添加到您的日历配置中:

calendar.add(Calendar. DATE, 1);

另外,请确保在清单上定义广播接收器,以便在应用未运行时发出警报。