我知道,我不是第一个问这个问题的人。我在堆栈中发现了很多问题,比如
Delete only one instance of a recurring event from my Android calendar
Android Calendar Provider exception on recurring events
Android Calendar Specific Event Deletion
但以上都没有解决问题。现在到我的代码。
我正在使用日历合同提供程序api进行所有操作(不需要支持旧的Android版本)。及其 NOT A SYNC ADAPTER 。
我们成功删除了所有事件(通过从事件表本身删除事件)。
但是当我尝试使用Events.CONTENT_EXCEPTION_URI删除事件时(插入)所有事件都消失了。以下是我的代码
ContentValues args = new ContentValues();
args.put(Events.TITLE, eNote.getEventTitle());
args.put(Events.DTSTART, eNote.getStartTimeMill());
args.put(CalendarContract.Events.ORIGINAL_INSTANCE_TIME, eNote.getStartTimeMill());
args.put(Events.ORIGINAL_SYNC_ID, 1);
args.put(Events.HAS_ALARM, "0");
args.put(Events.HAS_ATTENDEE_DATA,"0");
args.put(CalendarContract.Events.EVENT_TIMEZONE, eNote.getTimeZone());
args.put(CalendarContract.Events.STATUS, CalendarContract.Events.STATUS_CANCELED);
Uri.Builder eventUriBuilder = CalendarContract.Events.CONTENT_EXCEPTION_URI.buildUpon();
ContentUris.appendId(eventUriBuilder, eventID);
try {
final Uri resultUri = activity.getContentResolver().insert(eventUriBuilder.build(), args);
int eventIDNew = Integer.parseInt(resultUri.getLastPathSegment());
Log.i(Global.DEBUG_TAG,"eventIDNew : " +eventIDNew);
} catch (Exception e) {
e.printStackTrace();
Log.i(Global.DEBUG_TAG,
"Eroor : " +e.getMessage() );
}
eNote是一个对象,用于存储实例表中事件的详细信息,
给定值args.put(Events.ORIGINAL_SYNC_ID,1);直接,因为我没有在创建活动时设置同步ID而我们不需要任何同步操作
插入异常uri会返回一个新ID,但这会使所有事件都消失。
代码有什么问题.. 请帮助我们,我们欢迎所有的建议,并感谢所有人...
答案 0 :(得分:0)
Instances.query()
)ContentValues
。将您的实例的BEGIN值设为...Events.ORIGINAL_INSTANCE_TIME。将STATUS_CANCELED设为...Events.STATUS