当前位置: 首页 > 面试题库 >

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

包和泰
2023-03-14
问题内容

如何使用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的代码中,但出现错误。如何查看我