2015-06-30 2 views
6

Привет У меня есть следующий код для добавления события в моем календаре:Android календарь событий, не отображающие

public String addCalendarEntry(CalendarDTO calendar) { 

     ContentValues event = new ContentValues(); 
     ContentResolver cr = getContentResolver(); 

     long startMillis = calendar.getStartDate().getTimeInMillis(); 
     long endMillis = calendar.getEndDate().getTimeInMillis(); 
     String timeZone = TimeZone.getDefault().getID(); 

     event.put(CalendarContract.Events.CALENDAR_ID, calendar.getId()); 
     event.put(CalendarContract.Events.TITLE, calendar.getTitle()); 
     event.put(CalendarContract.Events.DESCRIPTION, calendar.getDescription()); 
     event.put(CalendarContract.Events.EVENT_LOCATION, calendar.getLocation()); 
     event.put(CalendarContract.Events.DTSTART, startMillis); 
     event.put(CalendarContract.Events.DTEND, endMillis); 
     event.put(CalendarContract.Events.ALL_DAY, Boolean.getBoolean(String.valueOf(calendar.isAllDay()))); // 0 for false, 1 for true 
     event.put(CalendarContract.Events.HAS_ALARM, 1); // 0 for false, 1 for true 
     event.put(CalendarContract.Events.EVENT_TIMEZONE, timeZone); 

     Uri uri = cr.insert(CalendarContract.Events.CONTENT_URI, event); 

     return uri.getLastPathSegment(); 
} 

Этот код работает отлично до другого дня, и вдруг не добавляет больше событий в мой календарь. Это тоже не ошибка, поэтому я здесь потерял.

CalendarDTO только перенос данных класса как таковые:

public class CalendarDTO { 
    int id; 
    String title; 
    String description; 
    String location; 
    Calendar startDate; 
    Calendar endDate; 
    boolean isAllDay; 

// getters and setters removed for brevity 
} 

Любые подсказки высоко оценены.

+0

проверил мой ответ? – Gattsu

+0

Я сделал, но это не обязательно отвечает на мой вопрос. Вы только предлагаете альтернативу. Я не собираюсь ниспровергать, поскольку вы пытались помочь, но альтернатива - это не ответ, если вы не уверены, что версия для Android нарушена. –

+0

ok sir Я удалил свой ответ – Gattsu

ответ

5

Вы проверяете, есть ли календарь с calendar.getId()?

А из документации: http://developer.android.com/reference/android/provider/CalendarContract.Events.html

Writing на события Существуют дополнительные ограничения на все обновления и вставки в таблицы событий:

Если AllDay установлен в 1 eventTimezone должен быть TIMEZONE_UTC и время должно соответствовать полуночной границе.

Try что-то вроде этого:

event.put(CalendarContract.Events.CALENDAR_ID, calendar.getId()); 
    event.put(CalendarContract.Events.TITLE, calendar.getTitle()); 
    event.put(CalendarContract.Events.DESCRIPTION, calendar.getDescription()); 
    event.put(CalendarContract.Events.EVENT_LOCATION, calendar.getLocation()); 
    if(calendar.isAllDay){ 
     Calendar start=calendar.getStartDate(); 
     start.set(Calendar.HOUR_OF_DAY, 0); 
     start.set(Calendar.MINUTE, 0); 
     start.set(Calendar.SECOND, 0); 
     start.set(Calendar.MILLISECOND, 0); 
     Calendar end=start; 
     end.add(Calendar.DAY_OF_MONTH,1); 
     event.put(CalendarContract.Events.DTSTART, start.getTimeInMillis()); 
     event.put(CalendarContract.Events.DTEND, end.getTimeInMillis()); 
     event.put(CalendarContract.Events.EVENT_TIMEZONE, Time.TIMEZONE_UTC); 
    }else{ 
     event.put(CalendarContract.Events.DTSTART, startMillis); 
     event.put(CalendarContract.Events.DTEND, endMillis); 
     event.put(CalendarContract.Events.EVENT_TIMEZONE, timeZone); 
    } 
    event.put(CalendarContract.Events.HAS_ALARM, 1); 
    event.put(CalendarContract.Events.ALL_DAY, calendar.isAllDay()?1:0); 
+0

Я попробую это и отчитаю, но вы можете быть на что-то здесь, я думаю. Спасибо –

+0

@MarcosPlacona, если это не поможет, дайте мне знать, и я удалю ответ, чтобы вы могли получить лучшее. – isma3l

+0

Вы совершенно правы, и я полностью пропустил это в документации. Это полностью спасло мой бекон! Спасибо @ isma3l –

Смежные вопросы