0

アプリケーションでボタンをクリックするだけで、Android のネイティブ カレンダー アプリケーションを開きたいと考えていました。オンラインで検索したところ、以下のコードが見つかりました。

Intent intent = new Intent(Intent.ACTION_EDIT);  
intent.setType("vnd.android.cursor.item/event");
intent.putExtra("title", "Some title");
intent.putExtra("description", "Some description");
intent.putExtra("beginTime", eventStartInMillis);
intent.putExtra("endTime", eventEndInMillis);

startActivity(intent);

誰かが私にこのコードを説明してもらえますか?

4

1 に答える 1

0

コードの機能に関する質問に答えるには

Intent intent = new Intent(Intent.ACTION_EDIT);  

ActionIntentに対応する新しい を作成します。これは一般的なインテント アクションです。つまり、これだけでは権利を自動的に起動するには不十分です。これが、次に行うことは、の MIME タイプを設定する理由です。カレンダー エディタを起動したいので、タイプを次のように設定します。IntentACTION_EDITActivityIntentvnd.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);
于 2013-03-17T00:05:56.543 に答える