CalendarContracts.Instancesのクエリは、個々のインスタンス「プレースホルダー」に展開されたすべての定期的なイベントで返されます。どの行がプレースホルダーを表し、どの行が一意の単一イベントであるかをどのように判断できますか?
2 に答える
1.どの行がプレースホルダーを表し、どの行が一意の単一イベントであるかをどのように見分けることができますか?
単一の非定期的なイベントを検出するにはCalendarContacts.Events
、定期的な列が null であるイベントをクエリして検索する方がはるかに簡単です。
2. 後者の 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 を返す」と言います。
このコードは Android Calendar ソースで見つかりました。3 つの属性すべてをチェックする理由がわかりません。後者の 2 つは、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)));
}