Изменение цвета события календаря Android - PullRequest
0 голосов
/ 31 августа 2018

В моем приложении я создаю события календаря на определенные даты. Поскольку я хочу, чтобы они были в цвете моего приложения (я хочу, чтобы они были быстро узнаваемыми), мой вопрос, как это реализовать. Вот что у меня есть:

Intent intent = new Intent(Intent.ACTION_INSERT);
                intent.setType("vnd.android.cursor.item/event");
                intent.putExtra(CalendarContract.Events.TITLE, "Some Title");
                intent.putExtra(CalendarContract.Events.DESCRIPTION, "Description");

                String dateTime = date.getTime().replace(" Uhr", "");
                dateTime += date.getDate().substring(date.getDate().lastIndexOf(" "));
                SimpleDateFormat dateFormat = new SimpleDateFormat("hh:mm dd.MM.yyyy", Locale.GERMAN);
                java.util.Date d = null;
                try {
                    d = dateFormat.parse(dateTime);
                } catch (ParseException e) {
                    e.printStackTrace();
                }

                assert d != null;
                intent.putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, d.getTime());

здесь я хочу установить цвет

                intent.putExtra(CalendarContract.Events.DISPLAY_COLOR, Color.YELLOW);

                myViewHolder.dateView.getContext().startActivity(intent);

Вот изображение того, что я хочу изменить в календаре. Приложение

1 Ответ

0 голосов
/ 16 сентября 2018

EVENT_COLOR задокументировано для записи адаптера синхронизации учетной записи, которой принадлежит календарь. Только приложение, владеющее календарем, должно записывать эти значения:

Это должно обновляться только адаптером синхронизации для данной учетной записи.

Возможно, ваше приложение может принудительно указывать определенные значения при непосредственном доступе к календарю (то есть не через намерение, а путем прямого запроса ContentResolver, если у вас есть соответствующие разрешения). Тем не менее, они могут быть перезаписаны приложением-владельцем без уведомления, не обязательно синхронизируются между устройствами и могут вызвать другие проблемы в будущем. Я не рекомендую это.

Документация не так понятна для EVENT_COLOR_KEY, поэтому столбец может быть опцией, если существует существующий цвет события, подходящий для вашего приложения (обратите внимание, что существующие цвета события могут зависеть как от календаря, так и от пользователя, не жесткие коды цветных клавиш!). Я бы предположил, что прямое использование ContentResolver будет необходимо, использование Intent работает только в том случае, если приложение календаря, выбранное пользователем, поддерживает эту функцию (я не знаю, поддерживают ли / поддерживают ли многие приложения календаря это).


Если вам нужны пользовательские цвета, которые работают независимо от существующих цветов календаря и установленного приложения календаря, вы можете создать свой собственный календарь, привязанный к вашему приложению. Назначить цвет всему календарю просто (CALENDAR_COLOR). Поскольку ваше приложение является владельцем этого календаря, вы можете свободно изменять любой аспект каждого события.

Однако эти события не являются частью существующего календаря вашего пользователя: они не синхронизируются между устройствами и не предоставляют каких-либо специфических для поставщика функций (если таковые имеются). Если ваши события не являются статичными для всех пользователей, я бы не рекомендовал идти по этому маршруту.

...