もう、私は他の夜に燃え尽きたと思います。しかし、他の誰かがここで終わった場合、カレンダー - >イベントのやりとりについて簡単に説明しておきます。
ロングストーリー:イベントの色は、入力したカレンダーによって異なります。カレンダーの色でオーバーライドされると、events_color列が表示されるのはなぜですか?私は私が知っていたwhish。
あなたはあなたの空想syncadapter、ユーザーなどを設定したら、それで、あなたは新しいカレンダーを作成する必要があります。
public long insertCalendar(EventType eventType) {
Uri calUri = CalendarContract.Calendars.CONTENT_URI;
ContentValues cv = new ContentValues();
cv.put(CalendarContract.Calendars.ACCOUNT_NAME, "DUMMY");
cv.put(CalendarContract.Calendars.ACCOUNT_TYPE, CalendarContract.ACCOUNT_TYPE_LOCAL);
cv.put(CalendarContract.Calendars.NAME, eventType.getDescription());
cv.put(CalendarContract.Calendars.CALENDAR_DISPLAY_NAME, eventType.getDescription());
cv.put(CalendarContract.Calendars.CALENDAR_COLOR, Color.parseColor(eventType.getColor()));
cv.put(CalendarContract.Calendars.CALENDAR_ACCESS_LEVEL, CalendarContract.Calendars.CAL_ACCESS_OWNER);
cv.put(CalendarContract.Calendars.OWNER_ACCOUNT, true);
cv.put(CalendarContract.Calendars.VISIBLE, 1);
cv.put(CalendarContract.Calendars.SYNC_EVENTS, 1);
//cv.put(CalendarContract.Calendars.CAL_SYNC1, eventType.getId());
calUri = calUri.buildUpon()
.appendQueryParameter(CalendarContract.CALLER_IS_SYNCADAPTER, "true")
.appendQueryParameter(CalendarContract.Calendars.ACCOUNT_NAME, "DUMMY")
.appendQueryParameter(CalendarContract.Calendars.ACCOUNT_TYPE, CalendarContract.ACCOUNT_TYPE_LOCAL)
.build();
Uri result = mContentResolver.insert(calUri, cv);
return Long.parseLong(result.getLastPathSegment());
}
私は「この場合には、CALENDAR_COLOR列に色を入れている注意してください#000000のようなものをColor.BLACKに解析します。 ACCOUNT_TYPE内の値にも注意してください。私が集めたものから、これを回避する別の方法はないようです。
public long insert(Event event, long calendarID) throws ParseException {
EventTypeDal adapter = new EventTypeDal();
EventType et = adapter.GetEventTypeById(event.getFkEventType());
ContentValues eventValues = new ContentValues();
eventValues.put("calendar_id", calendarID);
//eventValues.put(Events.SYNC_DATA1, event.getId());
eventValues.put(Events.TITLE, event.getTitle());
eventValues.put(Events.DESCRIPTION, et.getDescription());
eventValues.put(Events.EVENT_TIMEZONE, "Europe/Rome");
eventValues.put(Events.DTSTART, event.getStart().getTime());
eventValues.put(Events.DTEND, event.getEnd().getTime());
Uri eventUri = mContentResolver.insert(Uri.parse(eventUriString).buildUpon().appendQueryParameter(android.provider.CalendarContract.CALLER_IS_SYNCADAPTER,"true").appendQueryParameter(Calendars.ACCOUNT_NAME, "DUMMY").appendQueryParameter(Calendars.ACCOUNT_TYPE, "accountType").build(), eventValues);
return Long.parseLong(eventUri.getLastPathSegment());
}
今はカレンダー(calendarID param)内にイベントを配置しています。このイベントはカレンダーの色で表示されます。