0

我正在开发一个android应用程序,它使用ContentResolver以编程方式将一些事件添加到用户的默认日历。Android日历自定义事件颜色不断变为默认(蓝色)

我也根据事件的类型设置事件的颜色(在我的情况下:假日绿色,工作日红色)。这工作正常,但几分钟后所有的自定义着色变成蓝色(默认谷歌日历事件颜色)。我使用Nexus 5X进行调试。任何想法如何解决这个问题?

截图: 以前

enter image description here

enter image description here

代码:

// add work day event 
if (DateFrom > today.getTimeInMillis() && WorkType == '0') { 
       ContentResolver cr = context.getContentResolver(); 
       ContentValues values = new ContentValues(); 
       values.put(CalendarContract.Events.DTSTART, DateFrom); 
       values.put(CalendarContract.Events.DTEND, DateTo); 
       values.put(CalendarContract.Events.TITLE, Team + " (Id: " + Id + ")"); 
       values.put(CalendarContract.Events.DESCRIPTION, "Work Day."); 
       values.put(CalendarContract.Events.CALENDAR_ID, DEFAULT_CALENDAR_ID); 
       values.put(CalendarContract.Events.EVENT_TIMEZONE, TimeZone.getDefault().toString()); 
       values.put(CalendarContract.Events.EVENT_COLOR, Color.RED); 

       Uri eventUri = cr.insert(CalendarContract.Events.CONTENT_URI, values); 
       long eventID = Long.parseLong(eventUri.getLastPathSegment()); 
} 

// add day off event 
if (DateFrom > today.getTimeInMillis() && WorkType == '2' && IsApproved != null && IsApproved.equals("true")) { 

       ContentResolver cr = context.getContentResolver(); 
       ContentValues values = new ContentValues(); 
       values.put(CalendarContract.Events.ALL_DAY, 1); 
       values.put(CalendarContract.Events.DTSTART, DateFrom + 3600000); 
       values.put(CalendarContract.Events.DURATION, "P23H"); 
       values.put(CalendarContract.Events.TITLE, "Day Off!" + " (Id: " + Id + ")"); 
       values.put(CalendarContract.Events.DESCRIPTION, "Day Off"); 
       values.put(CalendarContract.Events.EVENT_COLOR, Color.GREEN); 
       values.put(CalendarContract.Events.CALENDAR_ID, DEFAULT_CALENDAR_ID); 
       values.put(CalendarContract.Events.HAS_ALARM, false); 
       values.put(CalendarContract.Events.EVENT_TIMEZONE, TimeZone.getDefault().toString()); 

       Uri eventUri = cr.insert(CalendarContract.Events.CONTENT_URI, values); 
       long eventID = Long.parseLong(eventUri.getLastPathSegment()); 
} 

回答

0

文档说:

EVENT_COLOR

对于各个事件的二次色。对于给定的帐户,只能通过同步适配器进行更新。

UPD: 正确的方法是使用EVENT_COLOR_KEY,你可以从CalendarContract.Colors选择。见documentation