我正在尝试从JAVA中的谷歌日历API获取几个信息。在尝试访问有关事件发生时间的信息时,我遇到了问题。我做了以下事情:
CalendarService myService = new CalendarService("project_name");
myService.setUserCredentials("user", "pwd");
URL feedUrl = new URL("http://www.google.com/calendar/feeds/default/private/full");
CalendarQuery q = new CalendarQuery(feedUrl);
CalendarEventFeed resultFeed = myService.query(q, CalendarEventFeed.class);
for (int i = 0; i < resultFeed.getEntries().size(); i++) {
CalendarEventEntry g = resultFeed.getEntries().get(i);
List<When> t = g.getTimes();
//other operations
}
在CalendarEventEntry上使用getTimes()获得的列表t 始终为空,我无法弄清楚原因。这对我来说似乎很奇怪,因为对于一个日历事件,它应该始终存在一个描述何时应该发生...我错过了什么?
答案 0 :(得分:1)
您必须了解或单次活动与重复活动:
getTimes
用于单次活动。
对于重复发生的事件,您必须使用getRecurrence()
或者,您可以将singleevents
属性设置为true,因此定期事件将作为单个事件返回,而getTimes将返回非空列表:
CalendarQuery q = new CalendarQuery(feedUrl);
q.setStringCustomParameter("singleevents", "true");
CalendarEventFeed resultFeed = myService.query(q, CalendarEventFeed.class);
// process the results as single-events now...
参考:寻找文本“singleevents”here。
注意:如果您使用magic-cookie网址访问Feed,则无论您如何在查询中设置singleevents
属性,都会将周期性事件作为重复事件返回。
答案 1 :(得分:0)
This Google support request is also relevant.(Toto提供的答案相同,但附加信息)