2017-01-20 2 views
0

Я разрабатываю приложение, которое считывает все события из файла calendar.ics, а затем отображает все события. Мой код отлично работает с отдельными событиями, и я могу извлечь все события из файла, потому что он содержит все события. Но когда я создаю повторяющиеся события, я не могу получить все события, кроме первого, потому что файл calendar.ics содержит "RRULE" вместо всех событий. Я пробовал "rfc2445.jar", но это не сработало или, может быть, я точно не знаю, как его использовать ... Есть ли какая-нибудь библиотека/код/​​метод/функция что-нибудь, что могло бы помочь мне разобрать и отобразить все события?Как перечислить/извлечь все повторяющиеся события из файла ics из RRULE в Android?

CalendarBuilder builder = new CalendarBuilder(); 
Calendar calendar = null; 
calendar = builder.build(file); 
Log.d("RRULE 1: ", component.getProperty("RRULE").getName()); 
Log.d("RRULE 2: ", component.getProperty("RRULE").getValue()); 
Log.d("RRULE 3: DTSTART: ",component.getProperty("DTSTART").getValue()); 
Log.d("RRULE 4: DTEND: ", component.getProperty("DTEND").getValue()); 
....... 

выше фрагмент кода моего кода, и я получил следующие результаты

D/RRULE 1:: RRULE 
D/RRULE 2:: FREQ=DAILY;COUNT=184 
D/RRULE 3: DTSTART:: 20160701T170000 
D/RRULE 4: DTEND:: 20160701T200000 

я не знаю, как разобрать все события из FREQ?

ответ

1

Вы можете использовать нашу библиотеку lib-recur.

(очень) Основное использование (без учета часовых поясов) будет выглядеть следующим образом:

RecurrenceRule rule = new RecurrenceRule(component.getProperty("RRULE").getValue()); 
DateTime start = DateTime.parse(component.getProperty("DTSTART").getValue()); 
int maxInstances = 100; // limit instances for rules that recur forever 
RecurrenceRuleIterator it = rule.iterator(start); 
while (it.hasNext() && (!rule.isInfinite() || maxInstances-- > 0)) 
{ 
    DateTime nextInstance = it.nextDateTime(); 
    // do something with nextInstance 
} 

Библиотека также поддерживает несколько RRULE с, EXRULE с, EXDATE с, RDATEs и часовых поясов.

+0

Благодаря @Marten, я нашел другую библиотеку. Однако эта библиотека не давала мне дату окончания повторяющегося события, могу ли я получить ее, используя вашу библиотеку? e, g Периодическое событие ежедневно с 01/Feb - 30/Feb; Время начала 11:00 вечера - Время окончания 01:00 утра, могу ли я получить даты окончания событий? так как в этом случае дата начала и дата окончания не совпадают с событием. –

+0

Наша библиотека может сообщить вам только начало последнего события в наборе повторений. Но вы можете просто добавить количество миллисекунд между началом и концом, чтобы получить окончание последнего события. – Marten

Смежные вопросы