gpt4 book ai didi

android - 删除和更新现有的日历事件

转载 作者:可可西里 更新时间:2023-11-01 19:07:30 25 4
gpt4 key购买 nike

我正在关注 this要点,将 insert 事件放入 Calendar

我如何更新现有的日历事件,我之前使用下面的代码插入了它:

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

最佳答案

这是修改事件的方法。假设它的 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

关于android - 删除和更新现有的日历事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31264993/

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