Подтвердить что ты не робот

Две активности запуска

У меня есть два действия, отмеченные с помощью фильтра намерений

<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, активность не отображается, потому что, как я понял, система не может указать, какую активность следует показывать.

Мне просто нужны два действия, показанные в пусковой установке, поэтому, пожалуйста, не давайте совета по удалению фильтров намерений от второй активности, или если вы это сделаете, предоставите мне другой способ показать две иконки в панели запуска.

4b9b3361

Ответ 1

Вам нужно указать, какое действие является значением по умолчанию, добавив следующую строку в ваш фильтр намерений:

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

Вставьте это в действие по умолчанию и сохраните остальные. Тогда он должен работать.

Вы также можете добавить другой значок к своему второму действию с атрибутом android:icon="@drawable/myothericon"

Ответ 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>

Ответ 3

Кажется, что с помощью свойства привязки задачи можно иметь несколько действий запуска. См. Ответ на fooobar.com/questions/138337/...

Ответ 4

Добавьте <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>