前回はカレンダーの参照を行った。

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

今回は新しいカレンダーを追加する方法を見ていこう。
 
カレンダーの追加はとても簡単だ。
コードを見てみよう。


ACCOUNT_NAME:自分のメールアドレス
ACCOUNT_TYPE:他のカレンダーとかぶらないような値。今回は"chicketen.test"とした。
NAME:カレンダーの名前。今回は"テストカレンダー"とした。
CALENDAR_DISPLAY_NAME:カレンダーのアプリで表示される名前。今回はNAMEと同じにした。
CALENDAR_COLOR:カレンダーのアプリで表示される祭の色。
CALENDAR_ACCESS_LEVEL:前回軽く説明したが、カレンダーのパーミッション。基本的には"700"にしておけばよいだろう。
SYNC_EVENTS:イベントを同期するかどうかの値らしいがよく分からない。基本は1でいいだろう。
CALENDAR_TIME_ZONE:タイムゾーンの設定。基本的にはデフォルトのタイムゾーンで良いだろう。
OWNER_ACCOUNT:カレンダーの保持者のアカウント。基本的には自分のメールアドレスを入れる。

これを実行すると、新しいカレンダーが追加されるはずだ。

ところで、insertで見慣れないメソッドを使用していることに気づくはずだ。
これはまあ、おまじないのようなものだと思って良い。
以下のようなメソッドになる。

それでは実行後に前回のロジックで追加後のカレンダー一覧を参照してみよう。
1:docomo
docomo
com.android.nttdocomo
-----------------------------------
2:[自分のGMAILアドレス]
[自分のGMAILアドレス]
com.google
-----------------------------------
3:日本の祝日
[自分のGMAILアドレス]
com.google
-----------------------------------
4:誕生日
[自分のGMAILアドレス]
com.google
-----------------------------------
5:テストカレンダー
[自分のGMAILアドレス]
chicketen.test
-----------------------------------
問題なく登録されているようだ。

ところで、前回ACCOUNT_TYPEが"com.google"の場合はGoogleカレンダーと同期しているカレンダーであるということを説明したが、今回のロジックでACCOUNT_TYPEを"com.google"にすれば、Googleカレンダーに新規カレンダーを追加できるのだろうか。

答えはノーだ。

実行しても新しいカレンダーは作成されない。
調べてみると、stackoverflowで答えが見つかった。

Create new synced calendar with android api - stackoverflow

少なくとも現段階では、端末ローカルのアカウントしか作れないようだ。
これは少々残念だが、セキュリティを考えたらしょうがないのかもしれない。

ただし、既存のGoogleカレンダーにイベントを登録することは出来る。
次回以降にその辺を見ていくことにする。

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

関連記事
[Android] Googleカレンダーと連携する(1) カレンダーの参照 
[Android] Googleカレンダーと連携する(3) イベントの操作