Два запуска действий - PullRequest
       1

Два запуска действий

41 голосов
/ 19 января 2012

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

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

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

Ответы [ 4 ]

75 голосов
/ 19 января 2012

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

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

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

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

2 голосов
/ 19 января 2012

Добавить <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>
2 голосов
/ 19 января 2012

Кажется, что можно иметь несколько действий при запуске, используя свойство привязки задачи. Смотрите ответ на https://stackoverflow.com/a/3270422/819904

2 голосов
/ 19 января 2012

Я думаю, что это из-за действия "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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...