【问题标题】:How to get national holidays of selected country如何获得所选国家的国定假日
【发布时间】:2013-09-30 13:15:51
【问题描述】:

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

我见过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?

【问题讨论】:

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


    【解决方案1】:

    使用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();
    }
    

    【讨论】:

    • 可以用javascript做同样的事情吗?
    • @Vitor Guerreiro 这是某种谷歌 API,所以我认为这是可能的
    • 我收到此错误 com.google.api.client.googleapis.extensions.android.gms.auth.UserRecoverableAuthIOException,我还查看了 google,这是否需要链接到应用程序以获取数据?
    【解决方案2】:

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

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

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

    【讨论】:

    • 感谢您的回复。您的 Holiday API 是付费服务,我会选择免费的。你试过谷歌日历 V3 吗?阅读他们的文档时我有点困惑
    • 我没有使用 Google Calendar V3 的经验。看看这个:kayaposoft.com/enrico
    • 好的,一旦你尝试了,请告诉我这是否适合你 :)
    • 为提及第三方 API 的例子点赞
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多