一、action
インテントを使用してアクティビティを暗黙的に開始する場合、インテントに対してアクションを指定する必要があります。ターゲット アクティビティでは、<intent-filter> で 1 つ以上のアクションを定義できます。例えば:
<intent-filter>
<action android:name="com.test.action.ACT2" />
<action android:name="com.test.action.ACT3" />
<action android:name="com.test.action.ACT4" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="com.test.CATEGORY_ACT2" />
</intent-filter>
二、category
インテントを使用してアクティビティを暗黙的に開始する場合、0 個以上のカテゴリを指定できます。対象アクティビティのマニフェストファイルでは、<intent-filter>で複数のカテゴリを定義できます。インテントにはデフォルトで「android.intent.category.DEFAULT」が含まれるため、通常はターゲット アクティビティ マニフェスト ファイルに少なくとも 1 つの<category android:name="android.intent.category.DEFAULT" />を定義する必要があります。例外があります。これは、次のようなデフォルトのカテゴリ設定をメインの起動アクティビティで定義する必要はありません。
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
3、アクションとカテゴリーのマッチングルール
1. インテントにはアクションが含まれるため、ターゲット アクティビティ マニフェスト ファイルの構成に一致するアクションがある限り、一致は成功します。
2. インテントは複数のカテゴリ (デフォルトで android.intent.category.DEFAULT を保持するため、少なくとも 1 つ) を保持できるため、ターゲット アクティビティ マニフェスト ファイルの <intent-filter> のみに、インテントによって保持されるすべてのカテゴリが含まれます。正常に一致します。
注: android.intent.category.DEFAULT はデフォルトで保持されるため、インテントによって暗黙的に開始されるように、定義されたアクティビティ マニフェスト ファイル構成に android.intent.category.DEFAULT が含まれている必要があります。
4、データ
<intent-filter> タグ内にデータ タグを設定して、現在のアクティビティが応答できるデータの種類をより正確に指定することもできます。データタグでは以下を設定できます。
android:scheme: http など、データのプロトコル部分を指定するために使用されます。
android:host: データのホスト名部分を指定するために使用されます。
android:port: データのポート部分を指定するために使用されます。
android:path: ホスト名とポートの後のパス部分を指定するために使用されます。
android:mimeType: 処理できるデータのタイプを指定するために使用され、指定にワイルドカードを使用できます。
データの照合方法を指定するのは非常に簡単ですが、正常に照合するには、インテント内のデータの形式がデータ タグで定義された形式と一致している必要があります。
五、android.intent.action.MAIN およびandroid.intent.category.LAUNCHER
これら 2 つの構成は、AndroidManifest.xml マニフェスト ファイル内のアクティビティの <intent-filter> タグの下で構成されます。で、
android.intent.action.MAIN は アプリケーション エントリ、つまりアプリケーション アイコンがクリックされたときに開始される最初のアクティビティを示します。
android.intent.category.LAUNCHER は、現在のアクティビティをプログラム リスト (デスクトップ) に表示するかどうかを示します。
- アイコンはandroid: iconで設定され 、タイトルはandroid:labelで設定されます 。
- アクティビティでアイコンとラベルが設定されていない場合は、アプリケーションで設定されたアイコンとラベルが表示されます。
- アイコンとラベルがアプリケーションで設定されていない場合は、システムのデフォルトのアプリケーション アイコンが表示され、アプリケーション ID がタイトルとして表示されます。
シナリオ 1: android.intent.action.MAIN または android.intent.category.LAUNCHER のいずれか 1 つだけが構成されている場合、アプリケーション アイコンはプログラム リストに表示されません。例:
<activity
android:name=".TestActivity1"
android:exported="true"
android:icon="@drawable/baidu1"
android:label="测试动画界面1"
>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
</intent-filter>
</activity>
<activity
android:name=".TestActivity2"
android:exported="true"
android:icon="@drawable/baidu2"
android:label="测试界面2"
>
<intent-filter>
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
シナリオ 2: アクティビティで android.intent.action.MAIN と android.intent.category.LAUNCHER を構成すると、プログラム リストに現在のアクティビティのアイコンとラベルが表示されます。
シナリオ 3: 複数のアクティビティで android.intent.action.MAIN と android.intent.category.LAUNCHER を構成すると、プログラム リストには複数のアクティビティで構成されたアイコンとラベルが表示されます。次のように、デスクトップに 2 つのアイコンとタイトルが表示され、アイコンをクリックすると、対応するアクティビティに入ります。
<activity
android:name=".TestActivity1"
android:exported="true"
android:icon="@drawable/baidu1"
android:label="测试动画界面1"
>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER"
</intent-filter>
</activity>
<activity
android:name=".TestActivity2"
android:exported="true"
android:icon="@drawable/baidu2"
android:label="测试界面2"
>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
概要: アプリケーションのアイコンとタイトルを正常に表示するには、android.intent.action.MAIN と android.intent.category.LAUNCHER を一緒に設定する必要があります。
注: システム設定のアプリケーション リストでは、アプリケーションに設定されたアイコンとラベルを読み取る必要があります。アプリケーションに設定がない場合、システムのデフォルトのアプリケーション アイコンが現在のアプリケーションのアイコンとして表示され、アプリケーション ID が表示されます。タイトルとして が表示されます。