如何使用google-api-java-client解析用户Google日历中事件的开始和结束时间?
从Google代码安装此示例android项目后,我可以进入Google日历并解析一些信息(例如所有日历,事件名称,发布时间和摘要),但是我无法终生获取事件的开始和结束时间。
我对代码的理解是这样的。
在主要活动类(CalendarAndroidSample.java)内,这是获取我每个日历标题的方法:
void executeRefreshCalendars() {
String[] calendarNames;
List<CalendarEntry> 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)中一个单独的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<Link> 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中找到名为“已发布”的元素,并将该元素的值分配给字符串。
因此,返回第一个引用的Java方法executeRefreshCalendars()(在CalendarAndroidSample.java内部),
calendarNames[i] = calendars.get(i).title;
至
calendarNames[i] = calendars.get(i).published;
给我事件发布的日期。
我认为与理解此代码有关的问题是,对于事件的开始时间和结束时间,数据位于XML元素内,该元素具有两部分。
谢谢。
您将需要使用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/ model /
EventEntry.java?repo =样本
返回的包含startTime / endTime的Atom字符串如下所示:
<gd:when startTime='2010-03-13T14:00Z' endTime='2010-03-13T14:30Z'/>
它是在EventEntry类中建模的,如下所示:
@Key("gd:when")
public When when;
(When对象的属性,使用@Key批注进行映射)
在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;
我想从JavaGUI到数据库获取startTime和endTime的值。 电脑座位班 Cobadatabase类 这里的问题是,当单击登录按钮时,开始时间显示在我的数据库中的开始时间和结束时间列上。当单击注销按钮时,将在数据库中创建另一个行,该行在starTime和endTime列上都包含endTime。我想知道为什么会这样...
问题内容: 这是我的代码,用于查看从ListActivity中选择的事件(是包含所有这些事件的ArrayList): 此代码对重复发生的事件以外的所有事件均适用。对于重复发生的任何事件,endTime返回为null,从而导致程序崩溃。有人知道如何解决这个问题吗?我还有其他需要通过的额外费用吗? 问题答案: beginTime和endTime可以为0 / null,因为您是从错误的数据库(当然是从
我在Spring启动项目中运行Google Calendar API时遇到了一个问题。它是一个运行在live server上的企业项目 GoogleCalendarService.java 这是我收到的错误消息
问题内容: 我想获得给定日期的一周的最后一个星期和第一个星期。例如,如果日期是2011年10月12日,那么我需要2011年10月10日(作为一周的开始日期)和2011年10月16日(作为一周的结束日期)的日期吗?有人知道如何使用日历获得这两个日期类(java.util.Calendar)非常感谢! 问题答案: 一些代码如何处理对象。我还应该提到joda时间库,因为它可以帮助您解决许多问题。 码
我正在扩展一个PHP应用程序,它允许管理员创建事件并为这些事件分配特定用户。但是,在用户被列为可分配之前,我会检查用户的日历,看看他们是否可用。 我已经使用EWS为Exchange构建了一次,并使用FindItem方法在给定的时间段内检索用户电子邮件地址的事件,但我在Google日历API中很难找到等效的事件。 Events和FreeBusy Call似乎都需要特定用户的calendarId,这对
我从快速入门开始(https://developers.google.com/google-apps/calendar/quickstart/python)而且效果很好。然后我尝试用这个指南插入事件(https://developers.google.com/google-apps/calendar/create-events)。我将此代码添加到quickstart的代码中,但出现错误。如何查看我