安卓日歷同步的一些要點
1)API接口
android.content.ContentProvider
android.content.ContentResolver
android.provider.CalendarContract
另外,在創建日歷賬號時(向系統的Calendars表插入一條數據)需要設置為適配器模式,具體可以查看CalendarContract幫助。
2)周期規則字符串RRULE
RRULE的具體組成可以參考RFC5545,但是需要特別指出的是,Android系統並不是百分百支持該標準,只支持基本功能的標簽(等號聯系起來的鍵值對,我管它叫標簽)。
- 每年3月的第一個日子
FREQ=YEARLY;lNTERVAL=1;BYMONTHDAY=1;BYMONTH=3
- 每年3月的最後一個日子
FREQ=YEARLY;lNTERVAL=1;BYMONTHDAY=-1;BYMONTH=3
- 每月的最後一個工作日
FREQ=MONTHLY;lNTERVAL=1;BYDAY=MO,TU,WE,TH,FR;BYSETOPS=-1
- 每月的最後一個周末
FREQ=MONTHLY;lNTERVAL=1;BYDAY=SU,SA;BYSETOPS=-1
- 每月的第30天(如果不存在,則取最後一天,安卓手機不支持)
FREQ=MONTHLY;lNTERVAL=1;BYMONTHDAY=28,29,30;BYSETOPS=-1
- 每兩周的周五周日(頻率為星期模式且間隔大於1時需要指定星期的第一天,周頻率的間隔數大於1時必須指定WKST)
FREQ=WEEKLY;lNTERVAL=2;BYDAY=SU,FR;WKST=SU
3)周期重復日程與其例外日程的主從關系綁定
設置例外日程的3個字段的數值:
ORIGINAL_ID,周期日程的lD
ORIGINAL_INSTANCE_TIME,周期日程的實例的開始時間
ORIGINAL_ALL_DAY,周期日程的是否全天標誌
4)其他細節處理
RRULE中的截止時間延伸到當天時間的23點59分59秒999毫秒,防止個別機型上日程事件錯位出現在後一天中。
安卓日歷同步的一些要點