0

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

4

2 回答 2

1

1.如何分辨哪些行代表占位符,哪些是唯一的、单一的事件?

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

2.后两者只有出现在RRULE定义的规则中才能定义

False,RDATE 和 RRULE 完全相互独立。请参阅4.6.1 事件组件

       ; 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 循环组件属性

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

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

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

于 2013-03-03T07:12:07.057 回答
0

我在 android Calendar 源代码中找到了这段代码。我不确定为什么它会检查所有三个属性,因为我相信后两个属性只有在它们出现在 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)));  
  } 
于 2012-11-25T16:23:16.703 回答