2012-01-10 90 views
1

我試圖構建一個Android應用程序,該應用程序在公共日曆RSS源中顯示列表中的Google日曆條目。日曆Feed是公開的,但不會共享給任何特定的用戶。使用Google API Java客戶端來解析公共共享的日曆RSS源

我已經在iOS上通過使用Google的gdata庫(結合公共日曆RSS)來解析和顯示公共日曆提要。

不幸的是,gdata與Android不兼容。 Google提供了新的google-api-java-client庫,但所有示例代碼都與位於設備上的谷歌帳戶配合使用,然後通過OAuth進行身份驗證。

有沒有什麼辦法可以抓取和解析這些新庫的公共提要,而不必將驗證信息存儲在設備上?甚至認證呢?

回答

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. Annotate(@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);