在Android中使用google-java-api-client获取Google日历活动的开始和结束时间

如何使用google-api-java-client解析用户Google日历中事件的开始和结束时间?

从谷歌代码安装这个示例Android项目后,我可以进入我的谷歌日历并解析一些信息(如所有日历,事件名称,发布时间和摘要),但我不能为我的生活获取活动的开始和结束时间。

我对代码的理解就是这样。

在主活动类(CalendarAndroidSample.java)中,这是获取每个日历标题的方法:

void executeRefreshCalendars() { String[] calendarNames; List calendars = this.calendars; calendars.clear(); try { CalendarUrl url = CalendarUrl.forAllCalendarsFeed(); // page through results while (true) { CalendarFeed feed = client.executeGetCalendarFeed(url); if (feed.calendars != null) { calendars.addAll(feed.calendars); } String nextLink = feed.getNextLink(); if (nextLink == null) { break; } } int numCalendars = calendars.size(); calendarNames = new String[numCalendars]; for (int i = 0; i < numCalendars; i++) { calendarNames[i] = calendars.get(i).title; } } catch (IOException e) { handleException(e); calendarNames = new String[] {e.getMessage()}; calendars.clear(); } 

上面的for循环将我帐户中每个日历的标题分配给字符串数组“calendarNames []”。

我已经发现,在这里找到的项目(Entry.java)中的separete java文件中,@ Key注释指示代码解析XML元素,字符串的名称应该与元素的名称相匹配。

 public class Entry implements Cloneable { @Key public String summary; @Key public String title; @Key public String updated; @Key public String published; @Key("link") public List links; @Override protected Entry clone() { try { @SuppressWarnings("unchecked") Entry result = (Entry) super.clone(); Data.deepCopy(this, result); return result; } catch (CloneNotSupportedException e) { throw new IllegalStateException(e); } } String getEditLink() { return Link.find(links, "edit"); } } 

所以….

  @Key public String published; 

…将在XML中找到名为“published”的元素,并将该元素的值赋给该字符串。

因此,返回第一个引用的java方法executeRefreshCalendars()(在CalendarAndroidSample.java中),改变

 calendarNames[i] = calendars.get(i).title; 

 calendarNames[i] = calendars.get(i).published; 

告诉我活动发布的日期。

我认为我在理解这段代码时遇到的问题是,对于事件的开始和结束时间,数据位于包含两部分的XML元素中。

任何人都可以帮助我获得有关如何做到这一点的一些见解? 我在我的浏览器中打开了10个以上的标签,并且在SO上找到了所有关于这方面的帮助,而我能找到的最接近帮助的是这篇文章,但我无法弄清楚如何使用示例项目来实现它和我一起工作。

谢谢。

您需要使用EventFeed并查看EventEntry类

http://code.google.com/p/google-api-java-client/source/browse/calendar-v2-atom-oauth-sample/src/com/google/api/client/sample/calendar/v2/模型/ EventEntry.java?回购=样品

返回的包含startTime / endTime的Atom字符串如下所示:

  

它在EventEntry类中建模如下:

 @Key("gd:when") public When when; 

(使用@Key注释映射的When对象的属性)

When对象,模拟When对象的start / endTime属性

 @Key("@startTime") public DateTime startTime; @Key("@endTime") public DateTime endTime; 

与eventFeed交互时的客户端代码如下所示:

 EventEntry event = eventFeed.get(0); DateTime start = event.when.startDate;