Android日历自定义事件颜色不断更改为默认值(蓝色)

时间:2017-01-31 12:51:45

标签: android events calendar android-contentprovider android-contentresolver

我正在开发一个Android应用程序,它使用ContentResolver以编程方式将一些事件添加到用户的默认日历中。

我还根据事件的类型设置事件的颜色(在我的例子中:绿色表示假期,红色表示工作日)。这工作正常但几分钟后所有自定义着色变为蓝色(默认谷歌日历事件颜色)。我使用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());
}

1 个答案:

答案 0 :(得分:0)

文档说:

  

EVENT_COLOR

     

单个事件的辅助颜色。这应仅由给定帐户的同步适配器更新。

<强> UPD: 正确的方法是使用EVENT_COLOR_KEY,您可以从CalendarContract.Colors中进行选择。见documentation