web-dev-qa-db-ja.com

選択した国の祝日を取得する方法

ユーザーがリストから国を選択できるアプリを書いています。国を選ぶと、その国の祝日のリストが表示されます。

私は CalendarProvider および Google Calendar V を見てきましたが、現在のユーザーのカレンダーしか提供していないようです。

特定の国の祝日を取得するにはどうすればよいですか?どんな提案も私を助けるでしょう。


更新:

私は この投稿 を見つけました。これはJSON形式で休日のリストを取得できます。この例では、国コードはカレンダーIDで定義されています(例:pt_br.brazilian#[email protected]またはen.usa#[email protected])。

しかし、これに関するドキュメントは見つかりません。この方法でAPIを使用することは可能ですか?はいの場合、それらのカレンダーIDはどこで入手できますか?

17
Tai Dao

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#[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();
}
25
Tai Dao

CalendarProviderのドキュメントには、現在のユーザーのカレンダー情報のみが提供されると記載されています。

カレンダープロバイダーは、ユーザーのカレンダーイベントのリポジトリです。 Calendar Provider APIを使用すると、カレンダー、イベント、出席者、リマインダーなどに対してクエリ、挿入、更新、および削除操作を実行できます。

サードパーティのAPI( これ など)にアクセスし、その情報をアプリケーションにロードする必要があります。

3
ashatte