CalendarContracts.Instances的查询返回,所有重复事件都扩展到单个实例“占位符”。如何判断哪些行代表占位符以及哪些行是唯一的单个事件?
答案 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)));
}