2017-06-02 129 views
0

我試圖以編程方式更新日曆事件,但我遇到了一些問題。更新Android日曆事件

我使用的是來自谷歌Android文檔更新代碼:https://developer.android.com/guide/topics/providers/calendar-provider.html#update-event

因此,這裏是我的代碼:

ContentValues values = new ContentValues(); 
     Uri updateUri = null; 
     // New end for event 
     values.put(CalendarContract.Events.DTEND, endMillis); 
     updateUri = ContentUris.withAppendedId(CalendarContract.Events.CONTENT_URI, eventID); 
     int rows = c.getContentResolver().update(updateUri, values, null, null); 
     Log.i("DEBUG_TAG", "Rows updated: " + rows); 

但行變量總是返回0,除了當我進入應用程序設置,刪除日曆存儲,添加新的日曆和新的事件,然後當我嘗試更新它時,它只能運行一次。如果我嘗試添加另一個事件並在之後進行更新,那麼行將再次返回0。

有什麼想法?

感謝

請注意,我的應用程序是最小API級別17(上它不工作),但我想在API級別25和它的作品,所以你有什麼想法如何支持添加到我以前的Android版本的代碼?我還發現,經過一些測試後,它可以從API級別21開始工作。在下面,它不會。

編輯: 我找到了一個解決方案,查看下面的答案。

+0

爲什麼我不能在我的帖子的開頭添加「你好」?當我添加它時,它會自動刪除。這很好笑。 – greg

回答

0

這裏是爲我工作的解決方案:

,我使用的是與CalendarContract.Events._ID列查詢的結果,但我不得不使用CalendarContract.Instances.EVENT_ID提供的ID事件ID。 事實上,如果我創建一個新事件(第一個),它具有_id = 1和event_id = 1,如果我從Android日曆應用程序中刪除它,並用我的應用程序創建一個新事件,它也有_id = 1,但event_id = 2. 因此,如果我使用_id而不是event_id與withAppendedID(),更新查詢失敗。