これが数回尋ねられたことは知っていますが、明確な答えはないようです。定期的なイベントの単一のインスタンス (最初に作成したもの) を削除しようとしています。これを行うためにどのアプローチを取るべきかは明確ではありませんが、別の SO 投稿は理にかなっています - Android カレンダーから定期的なイベントのインスタンスを 1 つだけ削除する- 除外日、EXDATE を更新します。
UTC 時間とデフォルトのタイムゾーンの両方でこれを試しました。どちらの場合も戻り値は 1 で、1 行が更新されたことを示しますが、イベント インスタンスは消えません。
ContentValues event = new ContentValues();
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd'T'hhmmss'Z'");
sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
String str = sdf.format(beginTime.getTime());
//TimeZone timeZone = TimeZone.getDefault();
//event.put("eventTimezone", timeZone.getID());
event.put("exdate", str);
int numrows = getContentResolver().update(eventUri, event, "_id=? and calendar_id=?", new String[] {currentAppt.getCaleventid(), currentAppt.getCalendarid()});
Log.d(TAG, numrows + " rows updated - date was " + str);
問題なくすべてのイベントを削除できるので、カレンダー ID とイベント ID が正しいことはわかっています。1 の戻りカウントは、更新する行を見つけていることも示します。
私は何を間違っていますか?