1

我正在尝试从 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始终为空,我不知道为什么。这对我来说似乎很奇怪,因为对于日历事件,它应该始终存在关于它应该何时发生的描述......我错过了什么?

4

2 回答 2

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” 。

注意:如果您使用魔术cookie url 访问提要,那么无论您如何singleevents在查询中设置属性,重复事件总是作为重复事件返回。

于 2010-09-06T02:45:36.363 回答
0

此 Google 支持请求也很重要。(Toto 提供了相同的答案,但提供了更多信息)

于 2011-03-14T04:43:22.350 回答