2012-08-12 19 views
9

Intento agregar un calendario con el siguiente código. El evento creado puede ser leído por aplicaciones de calendario en mi teléfono, pero simplemente sincronícese con el Calendario de Google en línea. ¿Alguien puede darme algunos golpes para resolver el problema?Evento de calendario guardado localmente en el teléfono, pero no se puede sincronizar con Google Calendar

aquí alguna observación 1. Código se llevó a cabo en mi teléfono real (Galaxy Nexus 4.1.1) 2. Todos los demás eventos de calendario se pueden sincronizar con Google Calendar, simplemente no puede ser añadido al programa de sincronización.

--- --- actualización

Cuando cambio el código de seguimiento

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

- me sale el error

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

Ha logrado solucionar el problema. – AndroidDev

Respuesta

3

No deberías 't establece CalendarContract.Events.SYNC_EVENTS en CalendarContract.Events.CONTENT_URI.

Si el calendario ya está configurado como visible y sincronizado en su dispositivo, puede simplemente agregar un evento y se sincronizará.

Si necesita activar la sincronización desde la aplicación, puede configurar CalendarContract.Events.SYNC_EVENTS en CalendarContract.Calendars.CONTENT_URI. Por ejemplo, calId es la identificación del calendario que desea actualizar para que sea visible y sincronice).

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); 
Cuestiones relacionadas