如何删除日历中的特定事件

我想做的只是删除我在日历中保存的内容,而不是删除日历中已经存在的所有内容。为此,我使用以下代码。但是它将删除日历的所有内容。那么谁能告诉我如何预防呢?

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

回到顶部