android.intent.action.MAINの意味は何ですか?


85

私は非常に多くの異なる紛らわしい説明を見てきました。

<intent-filter>
     <action android:name="android.intent.action.MAIN" /> 
     <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>

の意味は何ですか

<action android:name="android.intent.action.MAIN" />

そして

 <category android:name="android.intent.category.LAUNCHER" />

そして

 <category android:name="android.intent.category.DEFAULT" />

回答:


73

android.intent.action.MAIN これは、このアクティビティがアプリケーションのエントリポイントであることを意味します。つまり、アプリケーションを起動すると、このアクティビティが作成されます。

ドキュメントから

ACTION_MAIN with category CATEGORY_HOME -- Launch the home screen.

また、ここから

アクティビティアクションメインエントリポイントとして開始し、データを受信することを期待していません。

android.intent.category.DEFAULTは、主に暗黙のインテントに使用されます。アクティビティを暗黙のインテントで開始したい場合は、このカテゴリをフィルタに含める必要があります。特定のカテゴリが割り当てられていないときにアクティビティが暗黙のインテントによって開始される可能性がある場合、そのインテントフィルタにはこのカテゴリを含める必要があります。

android.intent.category.LAUNCHER

カテゴリ-実行するアクションに関する追加情報を提供します。

CATEGORY_LAUNCHER ランチャーにトップレベルアプリケーションとして表示される必要があることを意味します

ドキュメントを参照してください。

  1. http://developer.android.com/reference/android/content/Intent.html
  2. http://developer.android.com/guide/topics/manifest/action-element.html

3
いいえ、MAIN 単独では「活動を家に持ち帰る」ことはできません。MAIN多くの用途があります。
CommonsWare 2014

92

ACTION_MAINアプリケーションのエントリポイントと見なされます。通常、それはと結合CATEGORY_LAUNCHERして<intent-filter>、ホーム画面のランチャーで、またはそれ自体がランチャーであると考える他の何かに表示されるはずの活動を示すために。そのような「ランチャー」はPackageManager、を使用してクエリを実行し、queryIntentActivities()そのようなアクティビティを見つけてユーザーに表示できます。

ただし、ACTION_MAIN他の特殊な目的のために他のカテゴリと組み合わせて使用​​することができます。たとえば、CATEGORY_CAR_DOCKwithACTION_MAINは、ユーザーが携帯電話をメーカー提供のカードックに落としたときに表示される候補と見なされるアクティビティを示します。

Intent一緒startActivity()に使用する場合、Intentがまだカテゴリに配置されていない場合は、に配置されCATEGORY_DEFAULTます。したがって、他に何もない場合を使用して、いくつか<activity> <intent-filter>を指定する必要があります。 <category><category android:name="android.intent.category.DEFAULT" />


1
賛成!私はあなたがこれに答えることを知っていました、そして私はそれを期待通りに明確で簡潔な答えを読むのを待っていました。ありがとう
Spurdow 2014

6
ええと、それでもあなたは私たちが両方を必要とする理由を説明していません。つまり、ACTION MAIN = ENTRY POINT、わかりました。CATEGORY_LAUCHER =アクティビティがホーム画面のランチャーに表示されることを示すため。これらの2つの文は同じで、言い回しが異なるだけです。
FRR 2015

9
@feresr:いいえ、違います。あなたはの例を提供第二段落、を含む、答えを読んでいることを伝えることができます異なるの使用ACTION_MAINないことではないホーム画面スタイルのランチャーが関与します。
CommonsWare 2015

2
@ vgokul129:ホーム画面のランチャーは、特に持って活動を探しているので<intent-filter>、両方を持つ<action android:name="android.intent.action.MAIN" />とし<category android:name="android.intent.category.LAUNCHER" />
CommonsWare 2017

2
@ vgokul129:「ランチャーのアイコンクリック中に正確に言うと、startActivity(intent)は呼び出されません」-この種の機能を提供する独自のランチャーを使用して独自のホーム画面を作成する場合のみ。ホーム画面ランチャーの動作は、そのホーム画面の実装者次第です。それがランチャーの主要な役割であるため、ほとんどは宣伝された起動可能なアクティビティの開始に焦点を合わせています。finish()すぐに電話をかけるアクティビティを歓迎しますが、ユーザーはアプリが壊れていると思います。
CommonsWare 2017

2
<action android:name="android.intent.action.MAIN"/>

このアプリケーションの主なアクティビティは

 <category android:name="android.intent.category.LAUNCHER" />

これはLAUNCHERカテゴリにあります。つまり、ホーム画面など、自分自身を「ランチャー」と見なすものすべてにアイコンが表示されます。

 <category android:name="android.intent.category.DEFAULT" />

startActivity()を呼び出すと、他のカテゴリが指定されていない場合、常にDEFAULTカテゴリが追加されます。

通常、android.intent.category.DEFAULT他のカテゴリがある場合でも追加するだけです。これにより、を使用してインテントを開始するときにリクエストインテントがカテゴリを提供しない場合startActivity(intent)、受信アクティビティもそれらのインテントを受信できることが保証されます。

出典:Android開発のビジーコーダーガイド

https://commonsware.com/Android/

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.