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