Evento de calendario guardado localmente en el teléfono, pero no se puede sincronizar con Google Calendar.

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 solo sincronizado con Google Calendar en línea. ¿Puede alguien darme algunos golpes para solucionar el problema?

Aquí hay algunas observaciones 1. El código se ejecutó en mi teléfono real (Galaxy Nexus 4.1.1) 2. Todos los demás eventos del calendario pueden sincronizarse con Google Calendar, solo el programa agregado no puede sincronizarse.

—actualizar—

Cuando cambio el código de seguimiento

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

– Recibo 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); } 

No debe establecer CalendarContract.Events.SYNC_EVENTS en CalendarContract.Events.CONTENT_URI .

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

Si necesita activar la sincronización desde la aplicación, puede establecer CalendarContract.Events.SYNC_EVENTS en CalendarContract.Calendars.CONTENT_URI .

Por ejemplo ( calId es el id del calendario que desea actualizar para ser visible y sincronizar).

 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); 
  • Adición de eventos para todos los días entre la fecha de inicio y la fecha de finalización en google calendar Android
  • API de calendario de Android insertar evento recurrente
  • Google OAuth2 - token de acceso y token de actualización -> invalid_grant / Code ya se redimió
  • ¿Cómo puedo averiguar el resultado de mi intención de calendario?
  • No se puede agregar un evento al calendario en android
  • Esquema de URL para activar el cliente del calendario
  • Cómo crear / utilizar un calendario dentro de una aplicación de Android (no como un intento)
  • Android: ¿Cómo interactuar con Google Calendar?
  • API de Google Calendar: Actualización de recordatorios a un evento
  • Sincronización desde el calendario del teléfono Android a Google Calendar en la Web sin utilizar Google Calendar Data API. es posible?
  • Editar / eliminar eventos de Google Calendar y obtener el ID de evento
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.