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点,它将正常工作)。但是,如果您在上午10点将警报设置为9AM,它将立即触发Pending Intent。不知道我哪里错了。任何帮助将不胜感激!
答案 0 :(得分:2)
您可能需要检查set time
是否小于current time
。如果设定时间小于当前时间,请勿为其设置警报。因为即使你已经过了时间就保持它也没用。
答案 1 :(得分:2)
您可以使用日历实例并将日期设置为第二天,并将其与警报一起使用。
答案 2 :(得分: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);