从Google日历中提取事件

时间:2011-10-03 14:00:35

标签: java android google-calendar-api

今天我创建了代码:

// Create a CalenderService and authenticate
CalendarService myService = new CalendarService("exampleCo-exampleApp-1");
myService.setUserCredentials("j...@gmail.com", "mypassword");

// Send the request and print the response
URL feedUrl = new URL("https://www.google.com/calendar/feeds/default/allcalendars/full");
CalendarFeed resultFeed = myService.getFeed(feedUrl, CalendarFeed.class);
System.out.println("Your calendars:");
System.out.println();
for (int i = 0; i < resultFeed.getEntries().size(); i++) {
CalendarEntry entry = resultFeed.getEntries().get(i);
System.out.println("\t" + entry.getTitle().getPlainText());
}

此代码列出了所有日历。在我身上 - 一个盒子日历,一个朋友的生日日历和一个假日日历。我需要接收今天发生的所有事件 - 即我的笔记,朋友的生日和假期。我怎么能这样做?

此代码返回指定数据范围的事件,但它仅适用于私人日历;我试图将“private”替换为“allcalendars”,但它不起作用:

URL feedUrl = new URL("https://www.google.com/calendar/feeds/default/private/full");

CalendarQuery myQuery = new CalendarQuery(feedUrl);
myQuery.setMinimumStartTime(DateTime.parseDateTime("2006-03-16T00:00:00"));
myQuery.setMaximumStartTime(DateTime.parseDateTime("2006-03-24T23:59:59"));

CalendarService myService = new CalendarService("exampleCo-exampleApp-1");
myService.setUserCredentials("jo@gmail.com", "mypassword");

// Send the request and receive the response:
CalendarEventFeed resultFeed = myService.query(myQuery, Feed.class);

1 个答案:

答案 0 :(得分:2)

您的问题出在您的Feed网址中。您正在使用的是在默认日历上获取事件。

要获取其他日历,您应该使用日历的ID替换网址中的默认,例如:

feedUrl = new URL("https://www.google.com/calendar/feeds/xxxxxxxxxxxxxxxxx@group.calendar.google.com/private/full");