在CalendarContracts.Instances中,确定原始事件是否重复出现

时间:2012-11-24 00:47:58

标签: android calendar instances recurring

CalendarContracts.Instances的查询返回,所有重复事件都扩展到单个实例“占位符”。如何判断哪些行代表占位符以及哪些行是唯一的单个事件?

2 个答案:

答案 0 :(得分:1)

  

1.如何判断哪些行代表占位符以及哪些行是唯一的单个事件?

要检测单个非重复事件,您可以更轻松地查询CalendarContacts.Events并查找重复列为空的事件。

  

2.后两者只有在出现在RRULE

定义的规则中时才能定义

错误,RDATE和RRULE完全相互独立。见4.6.1 Event Component

       ; the following are optional,
       ; and MAY occur more than once

       attach / attendee / categories / comment /
       contact / EXDATE/ EXRULE/ rstatus / related /
       resources / RDATE / RRULE / x-prop    
     

3.是否有人在意解释?

RRULE指定重复出现的模式 RDATE指定一组重复的日期时间。

有关正式定义和示例,请参阅4.8.5 Recurrence Component Properties

事实上,它们甚至可以共存:

  

描述:此属性[RDATE]可以与“RRULE”属性一起出现,以定义重复出现的聚合集。当它们都出现在iCalendar对象中时,重复事件由“RDATE”和“RRULE”定义的出现的并集定义。

因此该函数基本上说,“如果任何列不为空,则返回true”。

答案 1 :(得分:0)

我在android日历源代码中找到了这段代码。我不确定为什么它会检查所有三个属性,我相信,只有当它们出现在RRULE定义的规则中时,才能定义后两个属性。有人在乎解释吗?

  public static boolean isRecurrenceEvent(ContentValues values) {  
    return (!TextUtils.isEmpty(values.getAsString(Events.RRULE))||  
            !TextUtils.isEmpty(values.getAsString(Events.RDATE))||  
            !TextUtils.isEmpty(values.getAsString(Events.ORIGINAL_EVENT)));  
  }