gpt4 book ai didi

android - 通过 events.dtend 更新日历 instances.end

转载 作者:太空宇宙 更新时间:2023-11-03 10:25:10 24 4
gpt4 key购买 nike

当我更新 CalendarContract.Events DTEND 列时,为什么更改没有显示在 CalendarContract.Instances END 列中?

我的应用允许用户使用 CalendarContract.Events API 查看和更改日历事件。该代码对事件表执行更新,然后(稍后)使用实例表将其读回。例如,对 TITLE 的更改工作正常(也就是说,我更新了事件并且可以读回实例中的更改)。对 Events.DTEND 的更改确实显示在 Instances.DTEND 中,但我如何才能让该更新也显示在 Instances.END 中?

这很重要,因为显然 Android 日历应用程序(以及我的应用程序)使用 Instances.BEGIN 和 Instances.END 来确定要在日历中显示的内容。

这是我的更新代码:

  ContentResolver cr = getContentResolver();
ContentValues values = new ContentValues();
values.put (Events.CALENDAR_ID, calendarId);
values.put (Events.TITLE, title);
values.put (Events.DTEND, eventEnd.getTimeInMillis());
String where = "_id =" + eventId +
" and " + CALENDAR_ID + "=" + calendarId;
int count = cr.update (Events.CONTENT_URI, values, where, null);
if (count != 1)
throw new IllegalStateException ("more than one row updated");

谢谢。

最佳答案

解决方案原来是添加开始日期:

  ContentResolver cr = getContentResolver();
ContentValues values = new ContentValues();
values.put (Events.CALENDAR_ID, calendarId);
values.put (Events.TITLE, title);
values.put (Events.DTSTART, eventStart.getTimeInMillis());
values.put (Events.DTEND, eventEnd.getTimeInMillis());
String where = "_id =" + eventId +
" and " + CALENDAR_ID + "=" + calendarId;
int count = cr.update (Events.CONTENT_URI, values, where, null);
if (count != 1)
throw new IllegalStateException ("more than one row updated");

请注意:此案例仅说明如何更新非重复事件。非重复事件的 RRULE 为空。

我怀疑提供程序代码所做的只是使用您提供的值,而不是重新获取开始日期本身(显然,如果用户更改开始日期,您无论如何都必须提供它)。从减少数据库访问的角度来看,这是有道理的。可惜谷歌没有记录任何这些。

关于android - 通过 events.dtend 更新日历 instances.end,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13609665/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com