18

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

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

如何获取特定国家/地区的国定假日?任何建议都会帮助我。


更新:

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

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

4

2 回答 2

27

使用Google Calendar API V3解决了问题。我从这篇文章中找到的想法。假期可以从谷歌的默认假期日历中获取。

默认假期日历的ID列表可以在这里找到,支持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();
}
于 2013-09-27T10:11:31.120 回答
3

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

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

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

于 2013-09-25T05:12:23.107 回答