学生向けアプリの場合、カレンダーのインポート機能を実装しました。ICS ファイルは、いくつかのイベントがある学校のウェブサイトからダウンロードされます。すべてのイベントは単一のイベントであり、ics ファイル内の定期的なイベントではありません。インポートは問題なく動作します。しかし、インポートしたすべてのイベントを削除したい場合、レコードを同期できないというメッセージが表示されることがあります。私が今考えていたことは次のとおりです。
- すべてのイベントの ICS ファイルを解析する
- イベントを定期的なイベントとしてマージしてみてください
- 定期的なイベントをカレンダーにインポートする
しかし、私が何をしてもうまくいきません。どちらのイベントも繰り返しとしてマークされていますが、意図したように毎週ではなく毎月としてマークされています。または、単一のイベントとしてインポートされ続けます。
これが私が試した最後のコードです。
ContentValues event = new ContentValues();
event.put("calendar_id", calId);
event.put("title", title);
event.put("description", "[HSLU_TAAPP_IMPORTED]");
event.put("eventLocation", location);
event.put("eventTimezone", "GMT+1");
long startTime = startDateTime.getTimeInMillis();
startDateTime.add(Calendar.HOUR, 1);
long endTime = startDateTime.getTimeInMillis();
event.put("dtstart", startTime);
event.put("rrule", "FREQ=WEEKLY");
event.put("dtend", endTime);
Uri eventsUri = Uri.parse(getCalendarUriBase()+"events");
Uri insertedUri = _activity.getContentResolver().insert(eventsUri, event);
return insertedUri;
誰かがそれを正しく行う方法の例を教えてもらえますか? または、「同期できません」というメッセージを取り除くことを目的とした別のアプローチはありますか?