我正在关注this要点,将insert
事件发送到Calendar
我如何update
现有的日历事件,我之前使用以下代码插入:
public void addToCalender() throws ParseException {
......
ContentValues event = new ContentValues();
event.put(CalendarContract.Events.CALENDAR_ID, calendarId[0]);
event.put(CalendarContract.Events.TITLE, "Event Title");
event.put(CalendarContract.Events.DESCRIPTION, "Event Description");
event.put(CalendarContract.Events.EVENT_LOCATION, "Eevnt Location");
event.put(CalendarContract.Events.DTSTART, startCalTime);
event.put(CalendarContract.Events.DTEND, endCalTime);
event.put(CalendarContract.Events.STATUS, 1);
event.put(CalendarContract.Events.HAS_ALARM, 1);
event.put(CalendarContract.Events.EVENT_TIMEZONE, timeZone.getID());
Uri insertEventUri = AddEventActivity.this.getContentResolver().insert(
eventsUri, event);
ContentValues reminders = new ContentValues();
reminders.put(Reminders.EVENT_ID,
Long.parseLong(insertEventUri.getLastPathSegment()));
reminders.put(Reminders.METHOD, Reminders.METHOD_ALERT);
reminders.put(Reminders.MINUTES, 10);
AddEventActivity.this.getContentResolver().insert(remainderUri, reminders);
}
我想知道,我如何:
1. Remove existing event
2. Update existing event
答案 0 :(得分:3)
以下是修改活动的方法。假设它的ID是eventID:
public void updateEvent(int eventID)
{
ContentResolver cr = context.getContentResolver();
Uri eventUri = ContentUris.withAppendedId(CalendarContract.Events.CONTENT_URI, eventID);
ContentValues event = new ContentValues();
event.put(CalendarContract.Events.TITLE, "new title");
event.put(CalendarContract.Events.DESCRIPTION, "My cool event!");
cr.update(eventUri, event, null, null);
}
要删除某个事件,您有两种可能性:
如果您是标准申请: 使用前面的代码并用以下代码替换所有event.put:
event.put(CalendarContract.Events.DELETED, 1);
如果您是日历的SyncAdapter并想要真正的删除(之前的方法只是说应删除该事件,并且在同步日历后必须使用后面的事件:
public deleteEvent(Uri eventUri)
{
cr.delete(event, null, null);
}
其中eventUri是先前从事件ID获得的事件的Uri。
对于所有以前的方法,如果你得到一个关于不在同步适配器中的例外,你可以使用它:
public static Uri asSyncAdapter(Uri uri, String account, String accountType)
{
return uri.buildUpon()
.appendQueryParameter(CalendarContract.CALLER_IS_SYNCADAPTER, "true")
.appendQueryParameter(CalendarContract.Calendars.ACCOUNT_NAME, account)
.appendQueryParameter(CalendarContract.Calendars.ACCOUNT_TYPE, accountType)
.build();
}
我希望这会对你有所帮助。
来源:个人代码+ http://developer.android.com/guide/topics/providers/calendar-provider.html
答案 1 :(得分:1)
...
中定义的规则
事实上,Outlook似乎回应了RFC 2446总之,您必须指定
METHOD:REQUEST
和ORGANIZER:xxxxxxxx
...
Please read the original answer by Tom Carter.