Я пытаюсь написать приложение для Android, которое будет возвращать все события определенного календаря, которые будут происходить между двумя датами.
Я нашел много статей в Интернете для чтения / записи событий, но никто не объясняет, какявно используйте информацию таблицы Events .На самом деле, я могу вернуть все события, которые начинаются или заканчиваются между требуемым интервалом, но результат не содержит повторяющихся событий.Что ж, это так, но только если в интервал включена дата начала пуска.Если возникновение этого повторяющегося события должно произойти в течение интервала, оно не отображается.
Итак, мой вопрос: есть ли простой способ вернуть также повторяющиеся события, которые не начались в интервале дат, но которые будут иметь вхождение в датахинтервал ?Или я обязан ползти в формулы правил и правил для КАЖДОГО повторяющегося события календаря, чтобы выяснить, установлены ли вхождения между интервалами (ведьма кажется мне очень сложной)?
Ниже кода, который позволяет мневернуть события между 13.03.1984 в полночь и 13.03.1984 в полдень для календаря, чей идентификатор = 5.
Calendar cal = Calendar.getInstance();
cal.set(1984, 2, 13, 0, 0, 0);// 13 MARS 1984!!!
long calMilSec = cal.getTimeInMillis();
String[] l_projection = new String[]{"title", "dtstart", "dtend", "rrule"};
Cursor l_managedCursor = this.managedQuery(l_eventUri, l_projection, "calendar_id="+5+" AND dtstart>" + (calMilSec) + " AND dtstart<" + (calMilSec+43200000), null, "dtstart ASC");
if (l_managedCursor.moveToFirst()) {
int l_cnt = 0;
String l_title;
long l_begin;
long l_end;
String l_rrule;
StringBuilder l_displayText = new StringBuilder();
int l_colTitle = l_managedCursor.getColumnIndex(l_projection[0]);
int l_colBegin = l_managedCursor.getColumnIndex(l_projection[1]);
int l_colEnd = l_managedCursor.getColumnIndex(l_projection[2]);
int l_colRule = l_managedCursor.getColumnIndex(l_projection[3]);
do {
l_title = l_managedCursor.getString(l_colTitle);
l_begin = l_managedCursor.getLong(l_colBegin);
l_end = l_managedCursor.getLong(l_colEnd);
l_rrule = l_managedCursor.getString(l_colRule);
Date dateB = new Date(l_begin);
Date dateE = new Date(l_end);
SimpleDateFormat dateFormat = new SimpleDateFormat ("E-dd-MMM:HH:mm:ss-yyyy");
dateFormat.format(dateB);
dateFormat.format(dateE);
l_displayText.append(l_title + "\n" + dateB + "\n" + dateE + "\n" + l_rrule + "\n----------------\n");
++l_cnt;
} while (l_managedCursor.moveToNext() );
calName = calName + l_displayText.toString();
}
testText.setText(calName);