3

私はカレンダー同期プログラムを持っています、私の主な問題はイベントの最後の編集を見つけることです。このためのメタデータはありますか。同期するにはこの値が必要です。1週間で見つかりました。GoogleはCalendarAPIを完全にはサポートしていないと思います。誰かが以前にこの問題に遭遇したことがありますか?

読んでくれてありがとう

4

1 に答える 1

0

私は戻ってきました、私は一週間の再調査の後、私は方法を見つけました:新しいイベントの作成、削除、変更は使用する必要がありますasSyncAdapter

public static Uri asSyncAdapter(Uri uri, String account, String accountType) {
    return uri
            .buildUpon()
            .appendQueryParameter(android.provider.CalendarContract.CALLER_IS_SYNCADAPTER, "true")
            .appendQueryParameter(Calendars.ACCOUNT_NAME, account)
            .appendQueryParameter(Calendars.ACCOUNT_TYPE, accountType)
            .build();
}

//例えば:

ContentValues values = new ContentValues();
    values.put(Events.CALENDAR_ID, calendar_Id);
    values.put(Events.ORGANIZER, username);
    values.put(Events.TITLE, summary);
    values.put(Events.DESCRIPTION, description);
    values.put(Events.DTSTART, GlobalVar.convertTIMEtomilisecond(dtstart));
    values.put(Events.DTEND, GlobalVar.convertTIMEtomilisecond(dtend));
    values.put(Events.EVENT_TIMEZONE, timeZone);
    values.put(Events.EVENT_LOCATION, event_location);
    values.put(Events._SYNC_ID, uuid);
    values.put(Events.SYNC_DATA1, etag);
    values.put(Events.SYNC_DATA2, calendar.toString());
    Uri syncUri = CalendarProvider.asSyncAdapter(Events.CONTENT_URI, username, context.getResources().getString(R.string.ACCOUNT_TYPE));
    ContentResolver cr = context.getContentResolver();
    cr.insert(syncUri, values);

//ここでダーティ イベントを取得します

cur = cr.query(Uri.parse("content://com.android.calendar/events"), null, Events.DIRTY+" = ?", new String[]{String.valueOf(1)}, null);
    while (cur.moveToNext()) {
        int id = (int) cur.getLong(cur.getColumnIndex(Events._ID));

//そして、それは正常に動作します:P

于 2013-01-13T12:44:26.470 に答える