前回まではカレンダーの操作を行ってきた。

[Android] Googleカレンダーと連携する(1) カレンダーの参照 
[Android] Googleカレンダーと連携する(2) カレンダーの追加

今回はカレンダー上のイベントを操作してみる。

イベントの参照
まずはカレンダーに登録されているイベントを参照してみよう。
このような感じでイベントがGoogleカレンダーに登録されているとする。
calendar_event_ss1
これらのイベントを取得してみよう。

1.イベントを取得する時間の範囲を決める。
 これを設定しないとカレンダー上の全てのイベントを取得することになってしまう。
 とりあえず今回は現在から48時間以内のイベントを取得する。

2.この辺の流れはカレンダーの参照と同じなので説明は省く。
 パラメータの詳細は特に説明する必要も無いだろう。
 敢えて注意するならば、各パラメータの指定にはCalendarContract.Calendarsではなく、CalendarContract.Eventsを使うといったところだろうか。
 他にも色々なパラメータがあるが、詳細は公式ドキュメントを見て欲しい。

3.この辺の流れもカレンダーの場合と同じだ。
 取得したイベントを出力する。

それではこれを実行してみよう。
以下のような結果が得られた。
787:客先会議
03-05 14:00 - 03-05 16:00
-----------------------------------
788:スポーツジム
03-05 19:00 - 03-05 20:30
-----------------------------------
789:ランチミーティング
03-06 12:00 - 03-06 13:00
-----------------------------------
問題なく参照できているようだ。
あとは、これをListViewに組み込んだり、自前描画のカレンダーに組み込んだりと好きなように使える。

イベントの追加
次はイベントをカレンダーに追加してみよう。
カレンダーと違って、イベントはGoogleカレンダーに追加することが出来る。

1.基本的なところはカレンダーの追加と同じだ。
 今回は"テストイベント"という名前で現在時刻から1時間後に開始のイベントにした。

2.insertの処理は特に説明する必要は無いだろう。
 ただ、戻り値のURIをこのように処理することで新規に追加したイベントのIDを取得することができる。
 必要に応じてこのIDをDBに保存する等を行えば良い。

さて、実行結果としてPC側でのカレンダーを見てみよう。
calendar_event_ss2
問題なく追加されているようだ!

ここで一つ気をつけないといけないことがある。
これらの方法でイベントを追加するのはあくまでも「端末内のカレンダーへ」であって、直接クラウド上のGoogleカレンダーに行うのではないということだ。

端末内のカレンダーがいつクラウドと同期するかは状況次第なので、上記の処理を行ってすぐにクラウド上に反映されるわけではないということは常に意識しておかないといけない。
そうしないと、この誤解からエンドユーザーや顧客からお叱りの連絡をもらう羽目になるかもしれないので注意しよう。

ちなみに、端末内のカレンダーアプリを立ち上げて更新を実行すればすぐにクラウド上に同期されるようだ。

イベントを削除する
最後にイベントを削除してみよう。
削除するイベントは先ほど追加したテストイベントだ。

1.今回はサンプルということでイベントIDをハードコーディングしてある。
 791はテストイベントのIDだ。

2.ここも特に説明は必要ないだろう。
 削除用のURIを作成し、deleteメソッドに渡すだけだ。

それでは実行結果を見てみよう。
calendar_event_ss3
問題なく削除されているようだ!

削除の場合も、追加の時同様にクラウド上に即座に反映されるわけではないので注意しよう。


参考文献
ソフトウェア技術ドキュメントを勝手に翻訳

関連記事
[Android] Googleカレンダーと連携する(1) カレンダーの参照 
[Android] Googleカレンダーと連携する(2) カレンダーの追加