在我的应用程序中,我为特定日期创建日历事件。因为我希望它们具有我的应用程序的颜色(我希望它们能够快速识别),所以我的问题是,如何实现这一点。这是我所拥有的:
res = df.sort_values(['a', 'b'])\
.loc[(~df['a'].duplicated()) | df[['a', 'b']].duplicated(keep=False)]
print(res)
a b c d
0 11216 08-08-2018 2000 SIP
1 40277 28-08-2018 1000 SIP
2 44165 02-08-2018 8000 Lump
4 45845 16-08-2018 25000 Lump
6 52730 13-08-2018 10000 Lump
8 53390 20-08-2018 400000 Lump
9 56180 02-08-2018 1000 Lump
10 58537 11-07-2018 5000 Lump
14 85606 16-08-2018 3500 SIP
15 88327 06-08-2018 5000 SIP
16 90240 07-08-2018 2000 SIP
12 912813 15-08-2018 160001 Lump
13 912813 15-08-2018 6000 SIP
在这里我要设置颜色
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());
Here is a picture of the thing i want to change in the calendar App
答案 0 :(得分:0)
EVENT_COLOR
被记录为由日历所属帐户的同步适配器编写。只有拥有日历的应用程序才应写入以下值:
这仅应由给定帐户的同步适配器更新。
在您直接访问日历时(如果您没有适当的权限,则不是通过意图而是通过直接查询ContentResolver
),应用可能会强制使用特定值。但是,它们可能会在没有通知的情况下被“拥有”的应用程序覆盖,不一定跨设备同步,并可能导致其他问题。我不建议这样做。
EVENT_COLOR_KEY
的文档不够清晰,因此,如果存在适合您的应用程序的现有事件颜色,则可以选择该列(请注意,现有事件颜色可能取决于日历和用户,请勿对颜色键进行硬编码!)。我认为直接使用ContentResolver
是必要的,仅当用户选择的日历应用支持该功能时,才可以使用Intent
(我不知道/有多少日历应用支持)。
如果您需要独立于现有日历颜色和已安装日历应用程序工作的自定义颜色,则可以创建自己的日历,并将其绑定到您的应用程序。为整个日历分配颜色很简单(CALENDAR_COLOR
)。由于您的应用是该日历的所有者,因此您可以自由更改每个事件的任何方面。
但是,这些事件不是用户现有日历的一部分:它们不会跨设备同步,并且不提供任何特定于供应商的功能(如果有)。除非您的事件对所有用户都是静态的,否则我不建议您沿着那条路线走。