2015-06-30 12 views
6

Witam mam następujący kod do dodawania wydarzeń w moim kalendarzu:Android wydarzenia w kalendarzu nie wyświetla

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(); 
} 

Ten kod działa dobrze, dopóki na drugi dzień, i nagle nie dodawać żadnych więcej wydarzeń do mojego kalendarza. To też nie jest błąd, więc jestem tu pogrążony.

CalendarDTO jest tylko klasa transportu danych, takich jak:

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

// getters and setters removed for brevity 
} 

Wszelkie wskazówki wysoko cenione.

+0

sprawdził moją odpowiedź? – Gattsu

+0

Zrobiłem, ale to niekoniecznie odpowiada na moje pytanie. Sugerujesz tylko alternatywę. Nie będę głosował tak, jak próbowałeś, ale alternatywą nie jest odpowiedź, chyba że masz pewność, że wersja Androida jest zepsuta. –

+0

ok sir I skasowałem moją odpowiedź – Gattsu

Odpowiedz

5

Czy sprawdzasz kalendarz z numerem calendar.getId()?

I od docs: http://developer.android.com/reference/android/provider/CalendarContract.Events.html

piśmie do wydarzeń istnieją dalsze ograniczenia dotyczące wszystkich aktualizacji i wkładek w tabeli zdarzeń:

Jeśli ALLDAY jest ustawiony na 1 eventTimezone musi być TIMEZONE_UTC i czas musi odpowiadać północnej granicy.

spróbuj coś takiego:

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

Spróbuję tego i zgłoś się, ale możesz być na czymś tutaj myślę. Dzięki –

+0

@MarcosPlacona, jeśli to nie pomoże, daj mi znać, a ja usunę odpowiedź, abyś mógł uzyskać lepszą odpowiedź. – isma3l

+0

Masz całkowitą rację, a ja zupełnie to przegapiłem w dokumentacji. To całkowicie uratowało mój bekon! Dzięki @ isma3l –

Powiązane problemy