Вставлять повторяющиеся события в календарь 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
для этого события - посмотреть, если вы можете заметить какие-либо различия.