1
Intent myIntent = new Intent(Alarm.this, Automaton.class);
                  myIntent.putExtra("methodName", "myMethod");
                  myIntent.putExtra("hour", tp.getCurrentHour().toString());
                  myIntent.putExtra("minute", tp.getCurrentMinute().toString());
                  hour = tp.getCurrentHour();
                  minute = tp.getCurrentMinute();
                  PendingIntent pendingIntent = PendingIntent.getActivity(Alarm.this, 0, myIntent,PendingIntent.FLAG_UPDATE_CURRENT);
                  AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
                       Calendar calendar = Calendar.getInstance();
                       calendar.set(calendar.HOUR_OF_DAY, hour);
                       calendar.set(calendar.MINUTE, minute);
                       calendar.set(calendar.SECOND, 0); 
                       alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 86400000, pendingIntent);

以上是我的代码。这是我的问题;我想在指定时间运行另一个 Activity 中的方法。如果用户选择了一天中还没有过去的时间(假设您将闹钟设置为上午 10 点到上午 11 点,它会正常工作)。但是,如果您将上午 9 点的闹钟设置为上午 10 点,它会立即触发 Pending Intent。不知道我哪里出错了。任何帮助,将不胜感激!

4

3 回答 3

2

您可能需要检查 是否set time小于current time。如果设置的时间小于当前时间,不要设置闹钟。因为即使时间已经过去了,你保留它也没有用。

于 2013-05-21T03:38:51.013 回答
2

您可以获取日历实例并将日期设置为第二天并将其与警报一起使用。

于 2013-05-21T04:11:12.743 回答
0

正如@shreyas 所说,如果你需要赶时间,你需要自己检查一下。

示例.. 如果他们选择下午 5:00(HOUR_OF_DAY = 17),则将其与当前时间进行比较。如果该时间 (17) 小于当前时间,则在您的日历实例中添加一天。

int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
calendar.set(calendar.DAY_OF_WEEK, dayOfWeek + 1);
于 2017-03-15T05:46:36.643 回答