如何获得所选国家的国定假日

时间:2013-09-25 05:01:33

标签: android calendar google-calendar-api android-calendar

我正在编写一个允许用户从列表中选择国家/地区的应用。当他们选择一个国家时,会出现该国家的国家法定假日列表。

我见过CalendarProviderGoogle Calendar V3,但它们似乎只提供当前用户的日历。

我如何获得特定国家的国定假日?任何建议都会对我有所帮助。


更新:

我发现this post可以获得JSON格式的假期列表。在此示例中,国家/地区代码由日历ID定义,例如pt_br.brazilian#holiday@group.v.calendar.google.com或en.usa#holiday@group.v.calendar.google.com。

但我找不到任何关于此的文件。是否可以这种方式使用API​​?如果是,我在哪里可以获得这些日历ID?

2 个答案:

答案 0 :(得分:25)

使用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#holiday@group.v.calendar.google.com").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();
}

答案 1 :(得分:3)

CalendarProvider文档声明它仅提供当前用户的日历信息。

  

Calendar Provider是用户日历事件的存储库。   Calendar Provider API允许您执行查询,插入,更新,   并删除日历,事件,与会者,提醒和操作   等等。

您需要访问第三方API(例如this one)并将该信息加载到您的应用中。