Android:删除事件的发生会删除所有事件

时间:2014-11-20 10:10:06

标签: android calendar android-calendar

我知道,我不是第一个问这个问题的人。我在堆栈中发现了很多问题,比如

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,但这会使所有事件都消失。

代码有什么问题.. 请帮助我们,我们欢迎所有的建议,并感谢所有人...

1 个答案:

答案 0 :(得分:0)

以下是基础知识(我已回答here

  1. 找到要删除的实例。 (使用Instances.query()
  2. 使用事件ID exception URI创建appended
  3. 创建ContentValues。将您的实例的BEGIN值设为...Events.ORIGINAL_INSTANCE_TIME。将STATUS_CANCELED设为...Events.STATUS
  4. 现在只有insert(yourURI, yourValues)而且那就是它!