Вставлять повторяющиеся события в календарь Android

У меня есть проблема, которую я не могу решить. Мне удалось вставить мои события в мой календарь Android, но я хочу, чтобы они повторялись. Для дней рождения например. Я хочу, чтобы они повторялись ежегодно. У меня есть этот код:

    final ContentResolver cr = ctx.getContentResolver();
    ContentValues cv = new ContentValues();
    cv.put("calendar_id", calIds[0]);
    cv.put("title", title);

    cv.put("rrule", "FREQ=YEARLY");
    cv.put("description", comment );
    Calendar start = Calendar.getInstance();
    start.set(2012, 0, 2, 8, 0, 0);

    Calendar end = Calendar.getInstance();
    end.set(2012, 0, 2, 9, 0, 0);

    long startTime = start.getTimeInMillis();       
    long endTime = end.getTimeInMillis();

    cv.put("dtstart", startTime);
    cv.put("dtend", endTime);
    //Insertion on the events of the calendar
    cr.insert(Uri.parse("content://com.android.calendar/events"), cv);

Он вставляет мое событие, но не делает его повторяющимся. Я имею в виду, что мое событие появляется на 2jan2012, а на 2jan2013 - нет и не появляется в 2014 году и так далее. Таким образом, я открыл свой календарь на телефоне и попытался отредактировать свое событие, и я увидел, что там, где я должен выбрать его событие, там отображается "2 января 2012 года", а не "2 января", как это должно было бы быть, если бы его нужно было настроить. мое событие с моего телефона. С другой стороны, если я пытаюсь добавить событие вручную со своего телефона, это работает просто отлично (я имею в виду, что я могу добавить событие, которое происходит ежегодно). Еще одна вещь, которую я заметил, заключается в том, что если я меняю год, например, я ставлю 2010 вместо 2012, он будет включать мои события ежегодно до моей текущей даты. Чтобы быть более точным, он вставляет событие 2jan2010, другое для 2jan2011, а для 2jan2012 оно останавливается (сегодня 2 января 2012 года), и после этой даты больше событий для этой даты больше не вставлено. Кто-нибудь сталкивался с такой проблемой? Любая помощь приветствуется. Спасибо!

2 ответа

Поставьте "duration" вместо "dtend" в ContentValues, когда это повторяющееся событие.

См. /questions/23529136/kak-dobavit-povtoryayuschiesya-sobyitiya-programmno/23529152#23529152

Судя по тому, как это выглядит, любые события, которые вы пытаетесь добавить, не повторяются после текущей даты.

Используя Календарь, вручную вставьте событие Ежегодно / Ежемесячно / Еженедельно с определенным заголовком, например "Тест", которое повторяется после текущей даты. Затем напишите простой метод, который читает события, которые в настоящее время находятся в вашем календаре. Проверьте заголовок "Тест" и зарегистрируйте содержимое ContentValues для этого события - посмотреть, если вы можете заметить какие-либо различия.

Другие вопросы по тегам