在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;
- 如何在Android中添加2个org.opencv.core.Point对象?
- Android:如何以编程方式仅舍入位图的顶角?
- 使用android.content.Context.checkPermission检查权限时出现空指针exception
- 使用公钥进行RSA解密
- Android / Java试图找出放置变量声明的位置
- 在android中最喜欢的recyclelerview,使用sqlitecollections按钮
- 无法创建新会话。 (原始错误:’java -version’失败。错误:产生ENOENT)
- PDFBox:PDPageContentStream的追加模式行为不端
- 在滚动RecyclerView时更改了Cardview的数据