У меня есть приложение с двумя значками запуска и двумя разными действиями. Файл манифеста выглядит следующим образом:
....
<activity
android:name=".MyActivity"
android:label="@string/app_name"
android:icon="@mipmap/ic_launcher"
android:taskAffinity="my.package.com.MyActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".MySettings"
android:label="@string/settings"
android:icon="@mipmap/ic_launcher"
android:taskAffinity="my.package.com.MySettings">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
....
Я хочу, чтобы MyActivity
был экраном по умолчанию, который будет открываться после установки, поэтому я использовал .category.DEFAULT
.
action.MAIN
и category.LAUNCHER
должны отображать два отдельных значка запуска (1 для MyActivity
, 1 для MySettings
).
Проблема: когда я открываю MyActivity
, также открывается экран MySettings
. Я хочу, чтобы каждый значок запуска открывал только соответствующую ему активность. Я использовал taskAffinity
для каждого действия, чтобы решить проблему, но это не сработало. Я думаю, что для работы taskAffinity
активность должна быть запущена с флагом Intent.FLAG_ACTIVITY_NEW_TASK
, чего я не могу в моем случае (оба являются запускаемыми действиями).
Я также пытался использовать android:launchMode="singleTask"
, но это тоже не сработало.
Как сделать, чтобы каждый значок запуска открывал только свою активность?
ОБНОВЛЕНИЕ: Извините, я понял, что MyActivity
не открывает MySettings
, хотя мне так показалось. У MyActivity
не было пользовательского интерфейса, поэтому он показывал пустой экран, похожий на MySettings
. taskAffinity
работает правильно. Я добавил android:theme="@android:style/Theme.NoDisplay"
к MyActivity
, чтобы скрыть интерфейс.