我正在尝试制作应该每天17点开始的应用。如果我使用“calendar.set()”并让我们说它的18点,我设置它后立即开始报警。另一方面,如果我使用“calendar.add()”它不起作用,我的意思是即使设备时钟与我设置的值匹配,例如17点,警报根本不会启动。
Calendar calendar = Calendar.getInstance();
//calendar.add(Calendar.HOUR_OF_DAY, 17);
//calendar.add(Calendar.MINUTE, 0);
//calendar.add(Calendar.SECOND, 0);
calendar.set(Calendar.HOUR_OF_DAY, 17);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
Intent intent = new Intent(this, MyBroadcastReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this.getApplicationContext(), 123, intent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
我在这里缺少什么? 感谢
答案 0 :(得分:0)
如果当前时间超过17:00,您需要将DAY_OF_YEAR
字段加1。
Calendar.getInstance()
使用当前时间实例化一个新的Calendar对象。让我们假装这条线在7月1日18:00开始执行。设置小时,分钟和秒后,日历现在将在7月1日17:00存储。设置闹钟时,AlarmManager
会看到此时间已过,并立即触发闹钟。