2013-09-25 93 views
13

我正在製作可從列表中選擇國家的應用程序。選擇一個國家時,它會顯示該國家的國家法定節假日。如何獲得所選國家的國定假日

我見過CalendarProviderGoogle Calendar V3。但它似乎只提供當前的用戶日曆。

如何獲得國家法定節假日?任何建議,還幫我


更新:

我發現this post可以使用JSON獲取列表的假期。在這個例子中,由日曆ID(pt_br.brazilian#[email protected])定義的國家/地區代碼
但是我沒有看到任何文檔寫這個。
我還發現了另一個日曆ID(en.usa#[email protected])。

可以用這種方式嗎?如果是,我可以在哪裏獲得這些日曆ID?

回答

23

問題通過使用Google Calendar API V3解決。我從this post發現的想法。 假期可以從谷歌的默認假日日曆中獲得。

默認假期日曆的ID列表可以發現here,支持40個國家。

一塊的代碼,處理許可,並得到節日列表: -

com.google.api.services.calendar.Calendar client = null; 
     credential = GoogleAccountCredential.usingOAuth2(mContext, CalendarScopes.CALENDAR); 
     credential.setSelectedAccountName(mList.get(0)); 
     client = getCalendarService(credential); 
     do { 
      com.google.api.services.calendar.model.Events events; 
      events = client.events().list("en.usa#[email protected]").setPageToken(pageToken).execute(); 
      onHolidayChecked(events.getItems()); //result return here (events.getItems()) 
      pageToken = events.getNextPageToken(); 
     } while (pageToken != null); 

private com.google.api.services.calendar.Calendar getCalendarService(GoogleAccountCredential credential) { 
    return new com.google.api.services.calendar.Calendar.Builder(AndroidHttp.newCompatibleTransport(), new GsonFactory(), credential).build(); 
} 
+0

它可以做同樣的事情用JavaScript? –

+0

@Vitor格雷羅它是某種谷歌API的,所以我認爲這是可能的 – Dolphin

+0

我收到此錯誤com.google.api.client.googleapis.extensions.android.gms.auth.UserRecoverableAuthIOException,我也看着谷歌,這是否需要一個谷歌項目鏈接到應用程序才能獲取數據? – BennyKok

3

CalendarProvider文檔聲明它只提供當前用戶的日曆信息。

日曆提供對用戶的日曆事件的存儲庫。 日曆提供程序API允許用戶進行查詢,插入,更新, 和日曆刪除操作,活動參加者,提醒和 等。

您將需要訪問第三方API(例如this one)並將該信息加載到您的應用程序中。

+0

感謝您的答覆。您的假期API是付費服務,我會免費選擇一些東西。你有沒有試過谷歌日曆V3?閱讀他們的文檔時我有點困惑 – Dolphin

+2

我對Google Calendar V3沒有經驗。看看這個:http://kayaposoft.com/enrico/ – ashatte

+0

謝謝,該解決方案看起來承諾。我會盡力 – Dolphin

相關問題