Android CalendarProvider事件颜色

前端之家收集整理的这篇文章主要介绍了Android CalendarProvider事件颜色前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我最担心的是如何在Android CalendarProvider中使用Colors.我可以添加事件,但是当我尝试插入具有特定颜色的事件时,默认日历颜色(浅蓝色)似乎会忽略此首选项.

我想我不确定如何使用颜色.我想知道是否有人可以如此善意地阐明此事.

同时,这是我的代码(Event参数是一个自定义类,我知道名称令人困惑):

public long insert(Event event) throws ParseException{

    ContentValues eventValues = new ContentValues();
    eventValues.put("calendar_id",1); 
    eventValues.put(Events.SYNC_DATA1,event.getId());
    eventValues.put(Events.TITLE,event.getTitle());
    eventValues.put(Events.DESCRIPTION,event.getTitle());
    eventValues.put(Events.EVENT_COLOR,Color.RED);
    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());
}

谢谢.

最佳答案
好吧,我猜我那天晚上被烧掉了.然而,如果有其他人在这里结束,那么只要我得到它就可以对Calendar->事件交互做一个简短的解释.

长话短说:事件颜色取决于你把它们放入的日历.为什么如果它被Calendar颜色覆盖会有events_color列?我知道,我知道.

因此,一旦您设置了花哨的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,et.getDescription());

    eventValues.put(Events.EVENT_TIMEZONE,eventValues);
    return Long.parseLong(eventUri.getLastPathSegment());
}

现在我将一个事件放在日历中(calendarID param).此事件将显示日历的颜色.

猜你在找的Android相关文章