manifest如何将特定活动识别为android中的主要活动或第一活动?

时间:2014-02-19 03:43:50

标签: android android-activity android-manifest

我有四项活动,分别命名为第一,第二,第三和第四项活动。我知道Manifest是非常重要的文件,并且充当应用程序的根。我需要的是,当我运行整个应用程序时,它应该首先显示第三个活动(即指令活动),而不是显示第一个活动(即登录活动)。

因此,所有这四个活动都是在Manifest文件中创建的。那么现在,Manifest如何识别应首先启动哪些活动,以及它如何重视第一个首先启动的活动(指令活动)而不是其他活动?

然后,我还必须知道多个活动何时可能有多个启动器的概念,那么此Intent过滤器如何通过指定活动侦听的消息来执行过滤?顺便说一下,当涉及到多个活动时,意图过滤器和启动器如何发挥作用?

4 个答案:

答案 0 :(得分:2)

Activity中的每个BroadcastReceiverServiceAndroidManifest.xml都有一个Intent Filter,用于指定它与Android环境的互动方式。例如, BroadcastReceivers 可以指定它正在侦听的广播事件。

活动可以指定在主屏幕中看到它们的方式,或者可以在应用程序中打开哪些文件扩展名。某些应用没有活动 Intent Filters - 只需使用服务 BroadcastReceivers 。如果应用确实使用了一个或多个活动,开发人员可以选择添加 Intent Filter - 但这不是必需的。如果用户想要为用户提供启动器以便能够打开应用程序,则他或她必须使用此 Intent过滤器

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

这将创建一个启动器,其中包含应用程序图标(如果被android:icon属性覆盖,则为活动图标)和活动名称(由android:label属性指定)。例如,我可以有一个这样的清单:

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".MainActivity"
        android:label="@string/app_title" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name=".OtherActivity"
        android:label="@string/other_title"
        android:icon="@drawable/ic_other_launcher" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

此清单表明有两个启动器活动 - MainActivityOtherActivity。他们有不同的图标和不同的名称。它们也是完全独立的活动 - 因此每个人都必须处理接收新的意图,就像处理任何其他活动一样。

因此,要回答您的问题 - 不一定是主要或第一个活动,并且可能有多个主要或第一个活动

另请注意,可以配置第一个活动来更改活动 launch mode。默认情况下,每个新启动的 Activity 都是同一个应用程序的新实例 - 并且将具有以活动为基础的单独后备堆栈,这些后备堆栈首先通过 Intent Filter打开

答案 1 :(得分:0)

In side Manifest File Mention these line     inside activity for launching this activity as launcher activity
 <activity
        android:name="com.example.themap.MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

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

答案 2 :(得分:0)

主要活动包含这些过滤器,具体取决于这些过滤器主要活动将在第一时间启动,

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

这些过滤器只应声明一个活动(即MainActivity)。如果您想首先展示任何其他活动,您需要在MainActivity中保留一些条件,并根据它调用这些活动。

答案 3 :(得分:0)

有一个带有操作项的intent-filter,用于说明

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

是什么使它成为默认活动!

编辑:

可以有多个具有相同intent过滤器的活动,每个活动都会给出一个带有与该活动相关联的图标的新图标。单击该图标将首先打开其各自的活动。