Как можно было бы проанализировать время начала и окончания событий в календаре пользователей Google с помощью google-api-java-client?
После установки этого образца Android-проекта из кода Google я могу войти в свой календарь 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 []."
Я выяснил, что в отдельном Java-файле внутри проекта (Entry.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, который состоит из двух частей.
Может кто-нибудь помочь мне понять, как это сделать? У меня более 10 вкладок, открытых в моих браузерах, и я везде искал SO для получения помощи по этому вопросу, и самая близкая вещь, которую я могу найти, - это этот пост, но я не могу понять, как реализовать это с примером проекта, с которым я работаю.
Спасибо.