2012-08-12 3 views
9

Ich versuche, einen Kalender mit dem folgenden Code hinzuzufügen. Das erstellte Ereignis kann von Kalender-Apps auf meinem Telefon gelesen werden. Synchronisieren Sie es jedoch mit dem Online-Google-Kalender. Kann mir jemand ein paar Treffer geben, um das Problem zu lösen?Kalenderereignis lokal am Telefon gespeichert, kann aber nicht mit Google Kalender synchronisiert werden

hier sind einige Anmerkungen 1. Code wurde auf meinem echten Handy (Galaxy Nexus 4.1.1) 2. Alle anderen Kalenderereignisse können mit Google Kalender synchronisiert werden, nur das Programm hinzugefügt kann nicht synchronisiert werden.

--- --- Update

Als ich den Folge Code

values.put(CalendarContract.Events.SYNC_EVENTS,1); 
values.put(CalendarContract.Events.VISIBLE, 1); 

ändern - ich den Fehler

java.lang.IllegalArgumentException: Only the provider may write to sync_events 

public void addEvent() { 

    long startMillis = 0; 
    long endMillis = 0; 

    Log.v("LOG", "entered addEvent"); 


    //Calendar beginTime = Calendar.getInstance(); 
    //beginTime.set(2012, 8, 11, 22, 0); 
    //startMillis = beginTime.getTimeInMillis(); 
    startMillis = System.currentTimeMillis() + (3600 * 1000)*4; 

    //Calendar endTime = Calendar.getInstance(); 
    //endTime.set(2012, 8, 11, 23, 0); 
    //endMillis = endTime.getTimeInMillis(); 
    endMillis = System.currentTimeMillis() + (3600 * 1000)*5; 

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

    values.put(CalendarContract.Events.DTSTART, startMillis); 
    values.put(CalendarContract.Events.DTEND, endMillis); 
    values.put(CalendarContract.Events.TITLE, "Dog"); 
    values.put(CalendarContract.Events.DESCRIPTION, "DogInDESCRIPTION"); 
    values.put(CalendarContract.Events.CALENDAR_ID, 1); 
    values.put(CalendarContract.Events.EVENT_TIMEZONE, "eventTimezone"); 

    values.put(CalendarContract.Events.SYNC_EVENTS,0);  


    cr.insert(CalendarContract.Events.CONTENT_URI, values); 
} 
+0

Haben Sie es geschafft, das Problem zu lösen. – AndroidDev

Antwort

3

erhalten shouldn Sie nicht setzen CalendarContract.Events.SYNC_EVENTS auf CalendarContract.Events.CONTENT_URI.

Wenn der Kalender bereits als sichtbar und synchronisiert auf Ihrem Gerät eingerichtet ist, können Sie einfach ein Ereignis hinzufügen, und es wird synchronisiert. Wenn Sie die Synchronisierung über die App aktivieren müssen, können Sie CalendarContract.Events.SYNC_EVENTS auf CalendarContract.Calendars.CONTENT_URI setzen.

Zum Beispiel (calId ist die ID des Kalenders, den Sie aktualisieren möchten, um sichtbar zu sein und zu synchronisieren).

ContentResolver cr = context.getContentResolver(); 
ContentValues values = new ContentValues(); 
values.put(CalendarContract.Calendars.SYNC_EVENTS, 1); 
values.put(CalendarContract.Calendars.VISIBLE, 1); 

cr.update(ContentUris.withAppendedId(Calendars.CONTENT_URI, calId), values, null, null); 
Verwandte Themen