我發現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返回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
沒有人有經驗?任何幫助被感激:)
親切的問候
沒有人回答我的問題,所以我嘗試slipt的異常事件,以解決和它有關「SYNC_DATA」列... –