android中两个Activity同时设定了intent-filter的category为android.intent.category.LAUNCHER,会发生什么情况?

简介: 本文通过案例分析了在Android中当两个Activity都设置了`android.intent.category.LAUNCHER`类别时,会导致它们同时在应用启动器的"所有应用"页面显示为不同的启动入口。

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>
AI 代码解读
  • 如下显示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>
AI 代码解读

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页面显示其入口图标

目录
打赏
0
2
2
0
14
分享
相关文章
Android面试之Activity启动流程简述
Android面试之Activity启动流程简述
181 6
Android面试高频知识点(4) 详解Activity的启动流程
Android面试高频知识点(4) 详解Activity的启动流程
89 3
Android实战之如何截取Activity或者Fragment的内容?
本文首发于公众号“AntDream”,介绍了如何在Android中截取Activity或Fragment的屏幕内容并保存为图片。包括截取整个Activity、特定控件或区域的方法,以及处理包含RecyclerView的复杂情况。
94 3
Android面试高频知识点(4) 详解Activity的启动流程
讲解Activity的启动流程了,Activity的启动流程相对复杂一下,涉及到了Activity中的生命周期方法,涉及到了Android体系的CS模式,涉及到了Android中进程通讯Binder机制等等, 首先介绍一下Activity,这里引用一下Android guide中对Activity的介绍:
140 4
Android面试之Activity启动流程简述
Android面试之Activity启动流程简述
84 0
android基础:Intents 和 intent-filter 的匹配规则
这篇文章详细解释了Android开发中Intent和<intent-filter>的匹配规则,包括Action、Category和Data的解析规则以及如何通过这些规则匹配隐式Intent。
342 1
Android面试之Activity启动流程简述
每个Android开发者都熟悉的Activity,但你是否了解它的启动流程呢?本文将带你深入了解。启动流程涉及四个关键角色:Launcher进程、SystemServer的AMS、应用程序的ActivityThread及Zygote进程。核心在于AMS与ActivityThread间的通信。文章详细解析了从Launcher启动Activity的过程,包括通过AIDL获取AMS、Zygote进程启动以及ActivityThread与AMS的通信机制。接着介绍了如何创建Application及Activity的具体步骤。整体流程清晰明了,帮助你更深入理解Activity的工作原理。
165 0
解决Manifest merger failed : android:exported needs to be explicitly specified for <activity>
解决Manifest merger failed : android:exported needs to be explicitly specified for <activity>
389 1
为什么大厂要求安卓开发者掌握Kotlin和Jetpack?深度解析现代Android开发生态优雅草卓伊凡
为什么大厂要求安卓开发者掌握Kotlin和Jetpack?深度解析现代Android开发生态优雅草卓伊凡
64 0
为什么大厂要求安卓开发者掌握Kotlin和Jetpack?深度解析现代Android开发生态优雅草卓伊凡
Termux安卓终端美化与开发实战:从下载到插件优化,小白也能玩转Linux
Termux是一款安卓平台上的开源终端模拟器,支持apt包管理、SSH连接及Python/Node.js/C++开发环境搭建,被誉为“手机上的Linux系统”。其特点包括零ROOT权限、跨平台开发和强大扩展性。本文详细介绍其安装准备、基础与高级环境配置、必备插件推荐、常见问题解决方法以及延伸学习资源,帮助用户充分利用Termux进行开发与学习。适用于Android 7+设备,原创内容转载请注明来源。
707 76
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问