2012年1月22日日曜日

Intent経由でGoogleカレンダーに予定を追加する方法

コード
Intent intent = new Intent(Intent.ACTION_EDIT);  
intent.setType("vnd.android.cursor.item/event");
intent.putExtra("title", "予定のタイトル");
intent.putExtra("description", "予定の内容");
intent.putExtra("beginTime", eventStartInMillis); //開始日時
intent.putExtra("endTime", eventEndInMillis); //終了日時
startActivity(intent);

メモ
今回の方法では
1. IntentでGoogleカレンダーの新規予定作成画面を起動
2. Intentに設定したタイトル等の情報が新規作成画面に反映される
3. ユーザー操作で登録先カレンダー変更・通知設定等を行い、予定の追加完了
という流れになります。

Intentを使わない方法と比較すると若干ユーザー操作が増えるというデメリットがありますが、下記のメリットもあるかと思います。
・予定追加の際、更にユーザーが内容を追記できる
・自分のアプリにカレンダー読み書きのパーミッションを付加しなくてもよい

開始日時/終了日時はエポックタイムで指定します。
私はCalendarクラスのgetTimeInMillis()メソッドを使用して指定しました。

因みに、「ジョルテ」がインストールされていると、Intentに「ジョルテ」も反応しますが設定した予定の情報を渡すことは出来ませんでした。
データの渡し方が分かれば「ジョルテ」にも対応できるんじゃないかと思います。

上記コードは2.2(Froyo)、4.0(ICS)で動作確認を行っています。

参考にしたサイト
自転車で通勤しましょ♪ブログ
「ANDROID:カレンダーにINTENTを発行する」
http://319ring.net/blog/archives/1596
Stack Overflow
「How to launch Android Calendar application using Intent(Froyo)」
http://stackoverflow.com/questions/4373074/how-to-launch-android-calendar-application-using-intent-froyo

0 件のコメント:

コメントを投稿