如何删除日历中的特定事件
我想做的只是删除我在日历中保存的内容,而不是删除日历中已经存在的所有内容。为此,我使用以下代码。但是它将删除日历的所有内容。那么谁能告诉我如何预防呢?
Uri CALENDAR_URI = Uri.parse("content://calendar/events");ContentResolver cr = getContentResolver();
cr.delete(CALENDAR_URI, null, null); // Delete all
ContentValues values = new ContentValues();
values.put("calendar_id", 1);
values.put("title", this.title);
values.put("allDay", this.allDay);
values.put("dtstart", this.dtstart.toMillis(false));
values.put("dtend", this.dtend.toMillis(false));
values.put("description", this.description);
values.put("eventLocation", this.eventLocation);
values.put("visibility", this.visibility);
values.put("hasAlarm", this.hasAlarm);
cr.insert(CALENDAR_URI, values);
因此,我要删除的仅是我输入的条目。
Uri EVENTS_URI = Uri.parse("content://com.android.calendar/" + "events");ContentResolver cr = c.getContentResolver();
deleteEvent(cr, EVENTS_URI, 1);
private void deleteEvent(ContentResolver resolver, Uri eventsUri, int calendarId) {
Cursor cursor;
cursor = resolver.query(eventsUri, new String[]{ "_id" }, "calendar_id=" + calendarId, null, null);
while(cursor.moveToNext()) {
long eventId = cursor.getLong(cursor.getColumnIndex("_id"));
resolver.delete(ContentUris.withAppendedId(eventsUri, eventId), null, null);
}
cursor.close();
}
回答:
从日历中读取数据后,只需尝试一下即可。
向日历添加单次事件
要将条目添加到特定日历,我们需要配置一个日历条目以使用ContentValues进行插入,如下所示:
ContentValues event = new ContentValues();
每个事件都需要绑定到特定的日历,因此,您要设置的第一件事是将事件插入到的日历的标识符:
event.put("calendar_id", calId);
然后,我们设置有关事件的一些基本信息,包括String字段,例如事件标题,描述和位置。
event.put("title", "Event Title");event.put("description", "Event Desc");
event.put("eventLocation", "Event Location");
有许多不同的选项可用于配置事件的时间和日期。
我们可以如下设置事件开始和结束信息:
long startTime = START_TIME_MS;long endTime = END_TIME_MS;
event.put("dtstart", startTime);
event.put("dtend", endTime);
如果要添加生日或假日,则将条目设置为全天活动:
event.put("allDay", 1); // 0 for false, 1 for true
该信息对于大多数条目而言已足够。但是,还有许多其他有用的日历条目属性。
例如,您可以将事件状态设置为暂定(0),已确认(1)或已取消(2):
event.put("eventStatus", 1);
您可以通过将事件的可见性设置为默认(0),机密(1),私有(2)或公开(3),控制哪些人可以看到此事件:
event.put("visibility", 0);
通过将事件的透明度设置为不透明(0)或透明(1),可以控制事件在日历上是否消耗时间(可能有计划冲突)。
event.put("transparency", 0);
您可以控制事件是否触发提醒警报,如下所示:
event.put(“ hasAlarm”,1); // 0代表假,1代表真
一旦正确配置了日历事件,我们就可以使用ContentResolver
将新的日历条目插入相应的日历事件Uri中:
Uri eventsUri = Uri.parse("content://calendar/events"); Uri url = getContentResolver().insert(eventsUri, event);
对insert()方法的调用与Calendar内容提供者联系,并尝试将条目插入适当的用户Calendar中。如果导航到“日历”应用程序并启动它,则应该在适当的“日历”中看到日历条目。由于日历是同步的,因此如果您在网络上使用Google日历,您还将在网上看到日历条目。
private int DeleteCalendarEntry(int entryID) { int iNumRowsDeleted = 0;
Uri eventsUri = Uri.parse(getCalendarUriBase()+"events");
Uri eventUri = ContentUris.withAppendedId(eventsUri, entryID);
iNumRowsDeleted = getContentResolver().delete(eventUri, null, null);
Log.i(DEBUG_TAG, "Deleted " + iNumRowsDeleted + " calendar entry.");
return iNumRowsDeleted;
}
也通过此链接删除
以上是 如何删除日历中的特定事件 的全部内容, 来源链接: utcz.com/qa/431809.html