カレンダーアプリを呼び起こす(Intent)
|Android4.0(以降ICS)では、Intentで新たにカレンダーアプリを呼び出してスケジュールを追加することができるようになりました。
詳細はイカから。
Intentでカレンダーアプリを呼び起こしてスケジュールを追加するには、IntentにMIME type の ACTION_INSERTをセットして使います。
ACTION_INSERTがセットされたIntentを呼び出すとカレンダーアプリが呼び出されます。
※カレンダーアプリを呼び出す処理にpermissionは必要ありません。
カレンダーアプリを呼び出してスケジュールを追加するために、追加情報として、イカのものを持たせることができます。
追加情報 | 説明 |
---|---|
Events.TITLE | スケジュールのタイトル |
CalendarContract.EXTRA_EVENT_BEGIN_TIME | スケジュールの開始時刻 |
CalendarContract.EXTRA_EVENT_END_TIME | スケジュールの終了時刻 |
Events.EVENT_LOCATION | スケジュールの場所 |
Events.DESCRIPTION | スケジュールの詳細内容 |
Intents.EXTRA_EMAIL | スケジュールに招待するメールアドレス |
Events.ACCESS_LEVEL | スケジュールのアクセスレベル(プライベートか公開か) |
Events.AVAILABILITY | 他のスケジュールを、設定留守スケジュール期間中に入れられるかの可否 |
スケジュールの開始時刻と終了時刻であるCalendarContract.EXTRA_EVENT_BEGIN_TIMEとCalendarContract.EXTRA_EVENT_END_TIMEは、エポックからのミリ秒単位で設定します。
エポックとは、日時を、世界標準時間1970年1月1日午前0時0分0秒からの秒数で表したものです。
サンプルコード
それでは、実際にサンプルアプリを作ってみましょう。
■src/EventIntentSampleActivity
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | public class EventIntentSampleActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout.main); Button btn = (Button) findViewById(R.id.button1); btn.setOnClickListener( new OnClickListener() { @Override public void onClick(View v) { // カレンダーアプリを呼び出すIntentの生成 Intent intent = new Intent(Intent.ACTION_INSERT, Events.CONTENT_URI); //スケジュールのタイトル intent.putExtra(Events.TITLE, "タイトル" ); //スケジュールの開始時刻 ゼロで現在時刻 intent.putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, 0 ); //スケジュールの終了時刻 ゼロで現在時刻+1時間 intent.putExtra(CalendarContract.EXTRA_EVENT_END_TIME, 0 ); //スケジュールの場所 intent.putExtra(Events.EVENT_LOCATION, "大阪" ); //スケジュールの詳細内容 intent.putExtra(Events.DESCRIPTION, "サンプル" ); //スケジュールに招待するメールアドレス intent.putExtra(Intent.EXTRA_EMAIL, "hoge@hoge.com" ); //スケジュールのアクセスレベル intent.putExtra(Events.ACCESS_LEVEL, Events.ACCESS_DEFAULT); //スケジュールの同時持ちの可否 intent.putExtra(Events.AVAILABILITY, Events.AVAILABILITY_FREE); //Intentを呼び出す startActivity(intent); } }); } } |
ここで重要なのは、14行目です。
14行目で、カレンダーアプリを呼び出すようにIntentを設定しています。
18行目でスケジュールの開始時刻、20行目で終了時刻を設定しています。
引数をゼロにした場合、開始時刻は現在時刻が設定され、終了時刻は現在時刻+1時間が設定されます。
そして、設計画面です。
今回は、カレンダーアプリを起動する為のIntentを呼び出すボタンのみを設置しました。
■res/main.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 | <?xml version= "1.0" encoding= "utf-8" ?> <LinearLayout xmlns:android= "http://schemas.android.com/apk/res/android" android:layout_width= "fill_parent" android:layout_height= "fill_parent" android:orientation= "vertical" > <Button android:id= "@+id/button1" android:layout_width= "wrap_content" android:layout_height= "wrap_content" android:text= "Button" /> </LinearLayout> |
上記サンプルからIntentを呼び出すと、カレンダーアプリが起動し、スケジュール設定画面へと移ります。