ユーザーがリストから国を選択できるアプリを書いています。国を選ぶと、その国の祝日のリストが表示されます。
私は CalendarProvider および Google Calendar V を見てきましたが、現在のユーザーのカレンダーしか提供していないようです。
特定の国の祝日を取得するにはどうすればよいですか?どんな提案も私を助けるでしょう。
更新:
私は この投稿 を見つけました。これはJSON形式で休日のリストを取得できます。この例では、国コードはカレンダーIDで定義されています(例:pt_br.brazilian#[email protected]またはen.usa#[email protected])。
しかし、これに関するドキュメントは見つかりません。この方法でAPIを使用することは可能ですか?はいの場合、それらのカレンダーIDはどこで入手できますか?
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();
}
CalendarProviderのドキュメントには、現在のユーザーのカレンダー情報のみが提供されると記載されています。
カレンダープロバイダーは、ユーザーのカレンダーイベントのリポジトリです。 Calendar Provider APIを使用すると、カレンダー、イベント、出席者、リマインダーなどに対してクエリ、挿入、更新、および削除操作を実行できます。
サードパーティのAPI( これ など)にアクセスし、その情報をアプリケーションにロードする必要があります。