【问题标题】:Make exception event from original recurring event?从原始重复事件中制作异常事件?
【发布时间】:2013-05-30 17:46:12
【问题描述】:

我发现Events.CONTENT_EXCEPTION_URI (here) 用于制作重复事件。 很难从互联网上找到文档或代码示例。所以我尝试了很多方法

1 插入为 SyncAdapter

ContentValues values = new ContentValues();
    values.put(Events.ORIGINAL_INSTANCE_TIME, CaldavGlobalVar.getCurrentTime_());
    values.put(Events.SELF_ATTENDEE_STATUS, status);
    if(!username.equals("")){
        values.put(Events.ORGANIZER, username);
    }
    if(event.getSummarry()!=null){
        values.put(Events.TITLE, event.getSummarry());
    }
    if(event.getDescription()!=null){
        values.put(Events.DESCRIPTION, event.getDescription());
    }
    if(event.getDateStart()!=null){
        values.put(Events.DTSTART, CaldavGlobalVar.convertTIMEtomilisecond(event.getDateStart(), event.getAllDay()));
    }
    

   Uri exceptionUri = Uri. withAppendedPath(Events.CONTENT_EXCEPTION_URI,  String.valueOf(event.getEventId()));
    Uri syncUri = CalendarProvider.asSyncAdapter(exceptionUri, username,context.getResources().getString(R.string.ACCOUNT_TYPE));

    Uri resultUri = context.getContentResolver().insert(syncUri, values);

resultUri return null,我没有看到任何异常或任何关系的东西,所以我挖掘Android源代码(来自here)并找出他们使用Events.CONTENT_EXCEPTION_URI的方式所以我改变了

2 在第 1003 行插入“ContentProviderOperation”,如this

ContentValues values = new ContentValues();
    values.put(Events.ORIGINAL_INSTANCE_TIME, CaldavGlobalVar.getCurrentTime_());
    values.put(Events.SELF_ATTENDEE_STATUS, 1);
    values.put(Events.STATUS, Events.STATUS_CONFIRMED);

    ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
    Uri exceptionUri = Uri.withAppendedPath(Events.CONTENT_EXCEPTION_URI,
            String.valueOf(eventId));
    ops.add(ContentProviderOperation.newInsert(exceptionUri).withValues(values).build());

    mHandler.startBatch(mHandler.getNextToken(), null, CalendarContract.AUTHORITY, ops, 1000);

但是它显示它安装不成功的日志,我很担心,可能是谷歌不完全支持它,我还列出了Android中的所有内容提供程序,我没有任何异常uri(Events.CONTENT_EXCEPTION_URI)--@ 987654329@

抛出异常

java.lang.IllegalArgumentException: Unknown URL content://com.android.calendar/exception

有人有经验吗?感谢任何帮助:)

亲切的问候

【问题讨论】:

  • 没有人回答我的问题,所以我尝试通过异常事件滑倒并通过“SYNC_DATA”列将其关联...

标签: android android-contentprovider android-calendar caldav


【解决方案1】:

我的一小部分代码:

ContentValues args = new ContentValues();
args.put(CalendarContract.Events.ORIGINAL_INSTANCE_TIME, originalinstancetime);
args.put(CalendarContract.Events.STATUS, status);
Uri.Builder eventUriBuilder = CalendarContract.Events.CONTENT_EXCEPTION_URI.buildUpon();
ContentUris.appendId(eventUriBuilder, originalEventID);
try {
    final Uri resultUri = context.getContentResolver().insert(eventUriBuilder.build(), args);
    int eventID = Integer.parseInt(resultUri.getLastPathSegment());
} catch (Exception e) {
}    

【讨论】:

  • 使用该代码,日历如何知道哪个日期从重复中删除?
  • @basvk 嗨,Basvk,您能否分享一些关于在一天的事件开始时间和事件结束时间插入异常的想法..
  • 我将尝试解释:通过指定CalendarContract.Events.ORIGINAL_INSTANCE_TIME,您可以告诉Calendar Provider 您要更改哪个特定实例的状态。 CalendarContract.Events.CONTENT_EXCEPTION_URI 是一个特殊的Uri,必须用于此目的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-31
  • 1970-01-01
  • 1970-01-01
  • 2012-11-21
  • 2018-06-11
相关资源
最近更新 更多