Как получить национальные праздники выбранной страны

Я пишу приложение, которое позволяет пользователю выбирать страну из списка. Когда они выбирают страну, появляется список национальных праздников этой страны.

Я видел CalendarProvider и Календарь Google V3, но они, похоже, предоставляют только календарь текущего пользователя.

Как я могу получить национальные праздники определенной страны? Любое предложение поможет мне.


Обновлять:

Я нашел этот пост, который может получить список праздники в формате JSON. В этом примере код страны определяется идентификатором календаря, например pt_br.brazilian#[email protected] или en.usa#[email protected].

Но я не могу найти никаких документов об этом. Можно ли использовать API таким образом? Если да, где я могу получить эти идентификаторы календаря?


person Tai Dao    schedule 25.09.2013    source источник


Ответы (2)


Проблема решена с помощью API Google Calendar V3. Идея, которую я нашел в этом сообщении. Праздник можно получить из праздничного календаря Google по умолчанию.

Список идентификаторов календаря праздников по умолчанию можно найти здесь, поддержка 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();
}
person Tai Dao    schedule 27.09.2013
comment
Можно ли сделать то же самое с javascript? - person Vitor Guerreiro; 08.10.2015
comment
@Vitor Guerreiro Это какой-то API Google, поэтому я думаю, что это возможно. - person Tai Dao; 09.10.2015
comment
Я получаю эту ошибку com.google.api.client.googleapis.extensions.android.gms.auth.UserRecoverableAuthIOException, я также просмотрел Google, требуется ли для этого проект Google, который ссылается на приложение, чтобы получить данные? - person BennyKok; 18.02.2017

В документации CalendarProvider указано, что он предоставляет только информацию о календаре текущего пользователя.

Поставщик календаря — это репозиторий событий календаря пользователя. API поставщика календаря позволяет выполнять запросы, вставлять, обновлять и удалять операции с календарями, событиями, участниками, напоминаниями и т. д.

Вам потребуется доступ к стороннему API (например, этому) и загрузить эту информацию в ваше приложение. .

person ashatte    schedule 25.09.2013
comment
Спасибо за ответ. Ваш Holiday API является платным сервисом, я выберу что-нибудь бесплатное. Вы пробовали Google Calendar V3?. Я немного запутался, когда читал их документы - person Tai Dao; 25.09.2013
comment
У меня нет опыта работы с Google Calendar V3. Взгляните на это: kayaposoft.com/enrico - person ashatte; 25.09.2013
comment
Хорошо, дайте мне знать, если это сработает для вас, как только вы попробуете :) - person ashatte; 26.09.2013
comment
палец вверх за упоминание примера стороннего API - person ThinkDeep; 28.04.2017