просто проверить наличие в календаре? - PullRequest
1 голос
/ 15 января 2012

Я пытаюсь написать приложение для 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...