10

次のコードでカレンダーを追加してみます。作成されたイベントは、携帯電話のカレンダーアプリで読み取ることができますが、オンラインのGoogleカレンダーに同期するだけです。誰かが私に問題を解決するためにいくつかのヒットを与えることができますか?

ここにいくつかの注意があります1.コードは私の実際の電話(Galaxy Nexus 4.1.1)で実行されました2.他のすべてのカレンダーイベントはGoogleカレンダーに同期できますが、追加されたプログラムだけは同期できません。

- -アップデート - -

フォローコードを変更すると

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

1 に答える 1

3

CalendarContract.Events.SYNC_EVENTSオンにしないでくださいCalendarContract.Events.CONTENT_URI

カレンダーがデバイスで表示および同期されるように既に設定されている場合は、イベントを追加するだけで同期されます。

アプリから同期をオンにする必要がある場合は、オンに設定できCalendarContract.Events.SYNC_EVENTSますCalendarContract.Calendars.CONTENT_URI

たとえば (calIdは、更新して表示および同期するカレンダーの ID です)。

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);
于 2012-10-15T21:32:37.050 に答える