我正在开发一个项目,该项目涉及使用 Android 日历 API 读取和操作数据。我将使用 API 14 CalendarContract 和用于旧设备的更可疑的未记录 API 来执行此操作,以实现一些向后兼容性。
我目前正在玩数据库,以了解它们是如何工作的。到目前为止,一切都很好。
我发现的一个问题是,当我尝试更改参加者的状态(用户的状态,而不是任何其他参加者的状态)时,这似乎实际上并没有接受该活动的邀请。
例如,使用 2 个谷歌日历帐户,我这样做: 帐户 A 在设备上登录 帐户 B 创建事件并邀请帐户 A 事件显示在帐户 A 设备上 尝试通过日历 API 接受邀请。
这是我正在努力的最后一步。
这就是我正在做的事情:
ContentValues event = new ContentValues();
event.put("attendeeStatus", "1");//accept
Uri eventsUri = Uri.parse(getCalendarUriBase() + "attendees");
Uri eventUri = ContentUris.withAppendedId(eventsUri, id);
iNumRowsUpdated = getContentResolver().update(eventUri, event, null, null);
这成功地将数据库中的参加者状态更新为 1。
但是,这不会更新他们的实际出席情况。所以我的问题是,数据库模式中是否有另一个字段用于此目的?还是有更好/更有效的解决方案?和/或是否可以强制它与谷歌日历系统同步,以便我可以看到账户 A 已接受账户 B 的谷歌日历账户?
值得注意的是,我尝试了以下方法:
getContentResolver().notifyChange(eventUri, null);
getContentResolver().notifyChange(eventsUri, null);
这没有帮助。
注意:上面的代码专门针对 4.0 之前的设备,但对于 ICS 来说已经足够接近了。