如何从 android >= 8 的日历中删除事件?
How can I delete event from calendar on android >= 8?
我尝试了很多东西,阅读了很多关于它的 SO 帖子,但似乎没有。
我想删除所有事件。
以下是我如何插入我的日历事件:
ContentResolver cr = Objects.requireNonNull(myContext.getContentResolver());
ContentValues values = new ContentValues();
values.put(CalendarContract.Events.DTSTART, myEventCalendar.getStartEvent());
values.put(CalendarContract.Events.DTEND, myEventCalendar.getEndEvent());
values.put(CalendarContract.Events.TITLE, myEventCalendar.getTitle());
values.put(CalendarContract.Events.DESCRIPTION, myEventCalendar.getDescription());
values.put(CalendarContract.Events.CALENDAR_ID, 1);
values.put(CalendarContract.Events.EVENT_TIMEZONE, TimeZone.getDefault().getID());
Uri uri = cr.insert(CalendarContract.Events.CONTENT_URI, values);
这个方法很管用,但之后我似乎无法删除事件。
这是我的代码:
@RequiresApi(api = Build.VERSION_CODES.O)
public void deleteEventCalendar(Context myContext) {
Uri deleteUri = null;
Cursor cursor = myContext.getContentResolver().query(CalendarContract.Calendars.CONTENT_URI, null, null, null, null);
while (cursor.moveToNext()) {
long id = cursor.getLong(cursor.getColumnIndexOrThrow(CalendarContract.Events._ID));
deleteUri = ContentUris.withAppendedId(CalendarContract.Events.CONTENT_URI, id);
myContext.getContentResolver().delete(deleteUri, null, null);
}
cursor.close();
}
}
我觉得我还差得远,但还是不可能。
请帮助我。
答案从一开始就摆在我面前...
我打电话给 CalendarContract.Calendar
而不是 CalendarContract.Event
。
我能够在不同的设备上测试它并且一切正常。
public void deleteEventCalendar(Context myContext) {
Uri deleteUri = null;
Cursor cursor = myContext.getContentResolver().query(CalendarContract.Events.CONTENT_URI, null, null, null, null);
while (cursor.moveToNext()) {
long id = cursor.getLong(cursor.getColumnIndexOrThrow(CalendarContract.Events._ID));
deleteUri = ContentUris.withAppendedId(CalendarContract.Events.CONTENT_URI, id);
Log.i("id calendar","mon id"+id);
myContext.getContentResolver().delete(deleteUri, null, null);
}
cursor.close();
}
我尝试了很多东西,阅读了很多关于它的 SO 帖子,但似乎没有。 我想删除所有事件。 以下是我如何插入我的日历事件:
ContentResolver cr = Objects.requireNonNull(myContext.getContentResolver());
ContentValues values = new ContentValues();
values.put(CalendarContract.Events.DTSTART, myEventCalendar.getStartEvent());
values.put(CalendarContract.Events.DTEND, myEventCalendar.getEndEvent());
values.put(CalendarContract.Events.TITLE, myEventCalendar.getTitle());
values.put(CalendarContract.Events.DESCRIPTION, myEventCalendar.getDescription());
values.put(CalendarContract.Events.CALENDAR_ID, 1);
values.put(CalendarContract.Events.EVENT_TIMEZONE, TimeZone.getDefault().getID());
Uri uri = cr.insert(CalendarContract.Events.CONTENT_URI, values);
这个方法很管用,但之后我似乎无法删除事件。 这是我的代码:
@RequiresApi(api = Build.VERSION_CODES.O)
public void deleteEventCalendar(Context myContext) {
Uri deleteUri = null;
Cursor cursor = myContext.getContentResolver().query(CalendarContract.Calendars.CONTENT_URI, null, null, null, null);
while (cursor.moveToNext()) {
long id = cursor.getLong(cursor.getColumnIndexOrThrow(CalendarContract.Events._ID));
deleteUri = ContentUris.withAppendedId(CalendarContract.Events.CONTENT_URI, id);
myContext.getContentResolver().delete(deleteUri, null, null);
}
cursor.close();
}
}
我觉得我还差得远,但还是不可能。 请帮助我。
答案从一开始就摆在我面前...
我打电话给 CalendarContract.Calendar
而不是 CalendarContract.Event
。
我能够在不同的设备上测试它并且一切正常。
public void deleteEventCalendar(Context myContext) {
Uri deleteUri = null;
Cursor cursor = myContext.getContentResolver().query(CalendarContract.Events.CONTENT_URI, null, null, null, null);
while (cursor.moveToNext()) {
long id = cursor.getLong(cursor.getColumnIndexOrThrow(CalendarContract.Events._ID));
deleteUri = ContentUris.withAppendedId(CalendarContract.Events.CONTENT_URI, id);
Log.i("id calendar","mon id"+id);
myContext.getContentResolver().delete(deleteUri, null, null);
}
cursor.close();
}