我创建了一个从yahoo获取日历数据(vevents)的客户端。现在,我需要能够更新现有事件或创建新事件并"发布" IT,从Yahoo日历可见。
可以使用ICAL4J来完成此操作,或者我需要找到其他方法?
好吧,我找到了一种方法。问题在于,对于CaldavCollection,您实际上无法直接添加事件,需要将其添加为日历。有效的代码:
public void addEvent(VEvent event, VTimeZone timezone){
try {
Calendar calendar = new Calendar();
calendar.getProperties().add(new ProdId(prodId));
calendar.getProperties().add(Version.VERSION_2_0);
calendar.getProperties().add(CalScale.GREGORIAN);
calendar.getComponents().add(event);
collection.add(httpClient, calendar);
} catch (CalDAV4JException e) {
e.printStackTrace();
}
}
行中的" prodid"
calendar.getProperties().add(new ProdId(prodId));
是日历提供商的prodid(在我的情况下是prodid://yahoo//calendar//en)
该集合是CaldavCollecion的实例,与特定日历有关,因此只需在内部使用新事件添加日历,就会将其添加到正确的日历中。