设置新闹钟前,将取消之前的闹钟。
我设置闹钟在特定的时间,但每次我打开应用程序它会打开这是我使用的代码:
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(this, AlarmReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this,0010000,intent,0);
Calendar time = Calendar.getInstance();
time.set(Calendar.HOUR, 5);
time.set(Calendar.MINUTE, 59);
time.set(Calendar.SECOND, 0);
alarmManager.set(AlarmManager.RTC,time.getTimeInMillis(),pendingIntent);
好吧,你需要把闹钟设置在下次5点59分响。你可以通过获取当前时间来做到这一点,如果是在5:59:00之前,设置闹钟,如果是在5:59:00之后,增加一天并设置闹钟。这样做:
import java.util.Calendar;
import java.util.Date;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(new Panel(this));
Date dat = new Date();//initializes to now
Calendar cal_alarm = Calendar.getInstance();
Calendar cal_now = Calendar.getInstance();
cal_now.setTime(dat);
cal_alarm.setTime(dat);
cal_alarm.set(Calendar.HOUR_OF_DAY,5);//set the alarm time
cal_alarm.set(Calendar.MINUTE, 59);
cal_alarm.set(Calendar.SECOND,0);
if(cal_alarm.before(cal_now)){//if its in the past increment
cal_alarm.add(Calendar.DATE,1);
}
//SET YOUR AlarmManager here
}
我想给你一个可构建的例子,但我还不完全理解alarmmanager,所以这是你所拥有的。构建于eclipse 3.5.2,使用ADK 15
不要将此代码放在onCreate函数中,而是将其放在任何按钮事件或任何其他仅在用户交互时调用的事件中。我想,这样就可以了。
PendingIntent pendingIntent = PendingIntent.getBroadcast(this,0010000,intent,0);
pendingIntent.cancel();
将这个'cancel'方法添加到代码中。