两个发射器活动

时间:2012-01-19 14:00:37

标签: android android-activity

我有两个标有intent过滤器的活动

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.package"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk android:minSdkVersion="7" />

<application
    android:name=".MyApp"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" >

    <!-- work order activity -->
    <activity
        android:name=".app.WorkOrderActivity"
        android:label="@string/work_order"
        android:taskAffinity="com.package.task_for_work_order_activity" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

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

    <!-- inventory activity -->
    <activity
        android:name=".app.InventoryActivity"
        android:label="@string/inventory"
        android:taskAffinity="com.package.task_for_inventory_activity" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

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

问题是,当我安装apk文件时,没有显示任何活动,因为据我所知,系统无法指定应显示哪些活动。

我真的需要在启动器中显示两个活动,所以请不要提供有关从第二个活动中删除intent-filters的建议,或者如果你这样做,请提供另一种方法在启动器中显示两个图标。

4 个答案:

答案 0 :(得分:75)

您需要通过在intent-filter中添加以下行来指定哪个活动是默认活动:

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

将其插入默认活动并保留其余活动。然后它应该工作。

您可能还想使用属性android:icon="@drawable/myothericon"

为您的第二个活动添加不同的图标

答案 1 :(得分:2)

我认为这是因为“android.intent.action.MAIN”动作,这对我有用:

<application>
    <activity android:name=".MyActivityA" android:icon="@drawable/aicon"  android:label="@string/app_name">
        <intent-filter>
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name=".MyActivityB" android:icon="@drawable/bicon" android:label="@string/app_name">
        <intent-filter>
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
 </application>

答案 2 :(得分:2)

似乎可以通过使用任务关联属性来进行多次启动活动。请参阅https://stackoverflow.com/a/3270422/819904

上的答案

答案 3 :(得分:2)

添加<action>项,其中android:name属性已定义到两个意图过滤器:

<application
    android:name=".MyApp"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" >

    <!-- work order activity -->
    <activity
        android:name=".app.WorkOrderActivity"
        android:label="@string/work_order"
        android:taskAffinity="com.package.task_for_work_order_activity" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <action android:name=".app.WorkOrderActivity"/>
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <!-- inventory activity -->
    <activity
        android:name=".app.InventoryActivity"
        android:label="@string/inventory"
        android:taskAffinity="com.package.task_for_inventory_activity" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <action android:name=".app.InventoryActivity"/>
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>