2013-06-04 27 views
3

我發現Events.CONTENT_EXCEPTION_URIhere)用於進行重複性事件。 很難找到來自互聯網的文檔或代碼示例。所以,我嘗試了很多方法從原始重複事件中產生異常事件?

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返回null,我因此未看到任何異常或任何關係的事情,所以我挖Android源代碼(從here),並找出他們使用Events.CONTENT_EXCEPTION_URI方式,使我改變

2將通過 「ContentProviderOperation」 像this,符合1003

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) - content://com.android.calendar/exception

異常扔

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

沒有人有經驗?任何幫助被感激:)

親切的問候

+0

沒有人回答我的問題,所以我嘗試slipt的異常事件,以解決和它有關「SYNC_DATA」列... –

回答

4

我的代碼一小部分:

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) { 
}  
+3

使用該代碼,日曆如何知道哪些日期從重複中刪除? – Benoit

+0

你能解釋你的代碼嗎? – Fiddles

+0

@basvk嗨Basvk,請你分享一些關於插入異常事件開始時間和事件結束時間一天的想法.. –