私は非常に多くの異なる混乱する説明を見てきました。
<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" />
Android.intent.action.MAIN
は、このアクティビティがアプリケーションのエントリポイントであることを意味します。つまり、アプリケーションを起動すると、このアクティビティが作成されます。
docs から
ACTION_MAIN with category CATEGORY_HOME -- Launch the home screen.
また、 here から
アクティビティアクションはメインエントリポイントとして開始し、データの受信は想定していません。
Android.intent.category.DEFAULTは主に暗黙的なインテントに使用されます。暗黙的な意図によってアクティビティを開始する場合は、このカテゴリをフィルタに含める必要があります。特定のカテゴリが割り当てられていないときに暗黙のインテントによってアクティビティが開始される可能性がある場合、そのインテントフィルタにはこのカテゴリを含める必要があります。
Android.intent.category.LAUNCHER
category-実行するアクションに関する追加情報を提供します。
CATEGORY_LAUNCHER
は、ランチャーにトップレベルのアプリケーションとして表示されることを意味します
ドキュメントを参照してください。
ACTION_MAIN
は、アプリケーションのエントリポイントと見なされます。通常、CATEGORY_LAUNCHER
内の<intent-filter>
と組み合わせて、ホーム画面のランチャー、またはそれ自体がランチャーであると見なされるその他のアクティビティに表示されるアクティビティを示します。このような「ランチャー」は、queryIntentActivities()
を使用してPackageManager
を照会し、そのようなアクティビティを見つけてユーザーに表示できます。
ただし、ACTION_MAIN
は、他の特別な目的のために他のカテゴリと組み合わせて使用できます。たとえば、CATEGORY_CAR_DOCK
付きのACTION_MAIN
は、ユーザーが携帯電話をメーカー提供の車のドックに落としたときに表示される候補と見なされるアクティビティを示します。
Intent
をstartActivity()
とともに使用する場合、Intent
がまだカテゴリに配置されていない場合は、CATEGORY_DEFAULT
に配置されます。したがって、<activity>
<intent-filter>
は、some<category>
を指定する必要があり、他に何もない場合は<category Android:name="Android.intent.category.DEFAULT" />
を使用します。
<action Android:name="Android.intent.action.MAIN"/>
このアプリケーションの主なアクティビティは
<category Android:name="Android.intent.category.LAUNCHER" />
これは、ランチャーカテゴリにあります。つまり、ホーム画面など、自分自身を「ランチャー」と見なすものすべてにアイコンが表示されます。
<category Android:name="Android.intent.category.DEFAULT" />
他のカテゴリが指定されていない場合、startActivity()の呼び出しは常にDEFAULTカテゴリを追加します。
他のカテゴリがある場合でも、一般的にAndroid.intent.category.DEFAULT
を追加するだけです。これにより、startActivity(intent)
、受信アクティビティもそれらのインテントを受信できます。
出典:Android開発のビジーコーダーガイド