android中两个Activity同时设定了intent-filter的category为android.intent.category.LAUNCHER,会发生什么情况?
请看如下案例,看一次,就记住了……
1. AndroidManifest 案例
- 如下XML中,声明了两个activity
- 并且,同时都设定了类别了"android.intent.category.LAUNCHER"
- 包名:com.test.TestStrace
- src/main/AndroidManifest.xml
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.TestStrace">
<activity
android:name=".TestIntent"
android:label="@string/title_activity_test_intent">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
- 如下显示APP名称为 TestStrace
<resources>
<string name="app_name">TestStrace</string>
<string name="title_activity_test_intent">TestIntent</string>
<!--
This string is used for square devices and overridden by hello_world in
values-round/strings.xml for round devices.
-->
<string name="hello_world">Hello Square World!</string>
</resources>
2. 源码结构图示
3. 运行结果
- 如下图所示,在Launcher的all app页面,同时显示了2个入口:
- 入口一:APP名称 ,TestStrace
- 入口二:TestIntent
4. 结论
CATEGORY_LAUNCHER 官网说明:
该 Activity 是任务的初始 Activity,在系统的应用启动器中列出。
<category android:name="android.intent.category.LAUNCHER" />
1.可以被多个Activity使用
2. 所声明的Activity会在launcher的all app页面显示其入口图标