2012-08-12 2 views
9

Я пытаюсь добавить календарь по следующему коду. Созданное событие может быть прочитано приложениями календаря на моем телефоне, но просто синхронизируется с онлайн-календарем Google. Может ли кто-нибудь дать мне несколько хитов, чтобы решить проблему?Календарное событие, сохраненное локально на телефоне, но не может синхронизироваться с Календарем Google

вот некоторые замечания 1. Кодекс был работать на моем реальном телефоне (Galaxy Nexus 4.1.1) 2. Все остальные события календаря можно синхронизировать с Google Calendar, просто программа добавленной не может быть синхронизация.

--- обновление ---

При изменении последующей деятельности код

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

- я получаю ошибку

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

Вам удалось решить проблему. – AndroidDev

ответ

3

вы не должны t t CalendarContract.Events.SYNC_EVENTS на CalendarContract.Events.CONTENT_URI.

Если календарь уже настроен как видимый и синхронизирован на вашем устройстве, вы можете просто добавить событие, и он будет синхронизироваться.

Если вам нужно включить синхронизацию из приложения, вы можете установить CalendarContract.Events.SYNC_EVENTS на CalendarContract.Calendars.CONTENT_URI.

Например (calId - это идентификатор календаря, который вы хотите обновить, чтобы быть видимым и синхронизировать).

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); 
Смежные вопросы