我是Android开发的新手,我正在开发Task Reminder App。我需要为任务设置重复警报,为此,我使用重复选择器对话框。
但我不知道如何根据重复选择器对话框返回的字符串设置多个警报。
我正在使用以下重复选择器对话框。
它在变量' rrule'中返回一个字符串,但我不知道如何使用该字符串来设置多个警报。下面是为选择器设置Listener的代码。
recurrencePickerDialog.setOnRecurrenceSetListener(new RecurrencePickerDialog.OnRecurrenceSetListener() {
@Override
public void onRecurrenceSet(String rrule) {
}
});
recurrencePickerDialog.show(getSupportFragmentManager(),"recurrencePicker");
任何人都请帮助我。我会很感激..
答案 0 :(得分:3)
您可以使用Alarm Manager和自定义Broadcast Receiver设置闹钟。 您可以这样设置闹钟。
@Override
public void onRecurrenceSet(String rrule) {
if (rrule != null && rrule.length() > 0) {
EventRecurrence recurrenceEvent = new EventRecurrence();
recurrenceEvent.setStartDate(new Time("" + new Date().getTime()));
recurrenceEvent.parse(rrule);
//Sets alarm
Intent intent=new Intent(this,MyBroadcastReceiver.class);
PendingIntent pendingIntent= PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarmManager=(AlarmManager)getSystemService(ALARM_SERVICE);
long offset=getNextOccurence(recurrenceEvent);
alarmManager.set(AlarmManager.RTC_WAKEUP, Calendar.getInstance().getTimeInMillis()+offset,pendingIntent);
//Then save the rule somewhere.
} else {
Lod.d("TEST","No recurrence");
}
}
getNextOccurrence 功能
/**
* Get the milliseconds till next alarm
* @param e
* @return
*/
private long getNextOccurrence(EventRecurrence e) {
switch (e.freq) {
case EventRecurrence.HOURLY://When alarm is hourly
if(e.interval==0)//When set to 1 Hour
return 1000 * 60 * 60;
return 1000 * 60 * 60 * e.interval;
// TODO: Implement cases for other frequencies
}
return 0;
}
然后,在您的Broacast Receiver中,执行以下操作:
希望这有助于您开始使用。