コードの機能に関する質問に答えるには
Intent intent = new Intent(Intent.ACTION_EDIT);
ActionIntent
に対応する新しい を作成します。これは一般的なインテント アクションです。つまり、これだけでは権利を自動的に起動するには不十分です。これが、次に行うことは、の MIME タイプを設定する理由です。カレンダー エディタを起動したいので、タイプを次のように設定します。Intent
ACTION_EDIT
Activity
Intent
vnd.android.cursor.item/event
intent.setType("vnd.android.cursor.item/event");
これは、マニフェスト エントリに対応します。ノードに注意してくださいdata
(Jellybean バージョンのマニフェストが表示されています)。
<intent-filter>
<action android:name="android.intent.action.EDIT" />
<action android:name="android.intent.action.INSERT" />
<category android:name="android.intent.category.DEFAULT" />
<!-- mime type -->
<data android:mimeType="vnd.android.cursor.item/event" />
</intent-filter>
putExtra()
呼び出しにより、イベントのタイトル、開始時間、終了時間などのイベントの特性を指定できます。
次に、アクティビティを開始します。結果は次のようになります。
これで、Android カレンダー アプリを開いてイベントを追加できました。
警告: 走行距離は異なる場合があります
しかし、イベント エディターを呼び出したくない場合はどうすればよいでしょうか。Android カレンダー アプリを開くことだけが必要な場合は、使用できますPackageManager#getLaunchIntentForPackage()
(ただし、パッケージ名が変更されていないこと、Android カレンダーがインストールされていること、および への参照を取得できることが条件ですPackageManager
)。
アクティビティの例 (MainActivity.this を使用して、アクティビティから起動しているという事実を強調します):
Intent i = MainActivity.this.getPackageManager().getLaunchIntentForPackage("com.android.calendar");
if (i != null)
startActivity(i);