1

我正在尝试构建一个 Android 应用程序,该应用程序在公共日历 RSS 提要的列表中显示 Google 日历条目。日历提要是公开的,但不与任何特定用户共享。

我已经在 iOS 端通过使用 Google 的 gdata 库(与公共日历 RSS 结合)来解析和显示公共日历提要来做到这一点。

不幸的是,gdata 与 Android 不兼容。Google 拥有新的 google-api-java-client 库,但所有示例代码都与设备上的 google 帐户一起使用,然后通过 OAuth 进行身份验证。

有什么方法可以使用这些新库获取和解析公共提要,而无需在设备上存储身份验证信息?甚至根本验证?

4

1 回答 1

1

我找到了解决方案。在 Google Api Java 客户端示例中的当前 YouTube 示例中可以看到一个很好的示例。

http://code.google.com/p/google-api-java-client/wiki/SampleProgram

难题的缺失部分必须:

  1. 扩展 GoogleUrl 类(我使用了 CalendarUrl)
  2. 创建与提要的 jsonc 输出匹配的对象(您可以通过将 &alt=jsonc 附加到提要 URL 的末尾来获取 jsonc 输出)
  3. 注释 (@Key("NameOfField")) 步骤 2 中的对象以匹配 jsonc 名称

完成后,以下代码将构建并获得您需要的一切:

HttpTransport transport = new NetHttpTransport();
final JsonFactory jsonFactory = new JacksonFactory();
HttpRequestFactory factory = transport.createRequestFactory(new HttpRequestInitializer() {
        @Override
        public void initialize(HttpRequest request) {
            // set the parser
            JsonCParser parser = new JsonCParser(jsonFactory);
            request.addParser(parser);
            // set up the Google headers
            GoogleHeaders headers = new GoogleHeaders();
            headers.setApplicationName("Google-CalendarSample/1.0");
            headers.gdataVersion = "2";
            request.setHeaders(headers);
        }
});

CalendarUrl url = new CalendarUrl(YOUR_FEED_URL);

HttpRequest request = factory.buildGetRequest(url);
CalendarFeed feed = request.execute().parseAs(CalendarFeed.class);
于 2012-01-11T16:30:51.900 回答