2015-06-30 17 views
6

Ciao ho il seguente codice per aggiungere eventi sul mio calendario:eventi del calendario Android non visualizzano

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

Questo codice stava funzionando benissimo fino a quando l'altro giorno, e tutto ad un tratto non aggiunge alcun altri eventi nel mio calendario. Neanche l'errore, quindi sono a perdita qui.

CalendarDTO è solo una classe di trasporto dei dati in quanto tale:

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

// getters and setters removed for brevity 
} 

Eventuali indizi molto apprezzati.

+0

controllato la mia risposta? – Gattsu

+0

L'ho fatto, ma questo non risponde necessariamente alla mia domanda. Stai solo suggerendo un'alternativa. Non farò downvote mentre tentavi di aiutare, ma un'alternativa non è la risposta, a meno che tu non sia sicuro che la versione di Android sia rotta. –

+0

ok signore Ho cancellato la mia risposta – Gattsu

risposta

5

Verifica che sia presente un calendario con calendar.getId()?

E dalla documentazione: http://developer.android.com/reference/android/provider/CalendarContract.Events.html

scrivendo a eventi Non ci sono ulteriori restrizioni tutti gli aggiornamenti e inserti nella tabella Eventi:

Se AllDay è impostato su 1 eventTimezone deve essere TIMEZONE_UTC e il il tempo deve corrispondere a un limite di mezzanotte.

prova con qualcosa di simile:

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

Ci proverò e riferirò, ma potreste essere su qualcosa qui penso. Grazie –

+0

@MarcosPlacona, se non aiuta a farmelo sapere e cancellerò la risposta in modo da ottenerne una migliore – isma3l

+0

Hai perfettamente ragione e ho completamente perso questo nella documentazione. Questo ha totalmente salvato il mio bacon! Grazie @ isma3l –

Problemi correlati