只需检查日历事件?

时间:2012-01-15 18:59:26

标签: android events calendar

我正在尝试编写一个Android应用,它将返回两个日期之间定义的日历的所有事件。
我在网上发现了很多关于读/写事件的tutos,但没有解释如何明确使用Events table info。实际上,我能够返回在所需间隔之间开始或结束的所有事件,但结果不包含重复事件。嗯,确实如此,但只有在间隔中包含dtstart日期时才会这样做。如果在该间隔期间发生该重复事件的发生,则不会显示该事件。

所以,我的问题是:是否有一种简单的方法可以在日期间隔中返回尚未开始的重复事件,但在日期间隔中会出现 < / STRONG>?或者我 - 我不得不爬进rrule和rdate公式为每个日历的重复事件找出是否在间隔之间设置了事件(女巫在我看来非常复杂)? 下面的代码使我能够在午夜03/13/19和1984年中午03/13/19之间返回事件,以获取id = 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);

非常感谢。

0 个答案:

没有答案