У меня есть приложение с сервисом и текущим уведомлением и два вида деятельности:андроида - уведомление нажмите показывает текущую деятельность, если приложение закрыто начать новую деятельность
Activity A
и Activity B
.
Activity A
имеет кнопку, начинающуюся Activity B
.
При нажатии на уведомление я хочу следующие сценарии произойдет:
- Если приложение закрыто -> запустить приложение с
Activity A
. - Если приложение открывается либо на переднем плане или в фоновом режиме (открыт список приложений) в любой деятельности -> показать текущую деятельность без запуска нового
Activity A
, то есть, если я нахожусь вActivity B
-> показать текущийActivity B
и тот же дляActivity A
без запуск нового.
Я искал много, и, наконец, нашел answer, говоря, что вам нужно сделать:
final Intent notificationIntent = new Intent(context, ActivityA.class);
notificationIntent.setAction(Intent.ACTION_MAIN);
notificationIntent.addCategory(Intent.CATEGORY_LAUNCHER);
notificationIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
В Manifest у меня есть:
Примечание Я использовал android:launchMode="singleTop".
<activity
android:name=".ActivityA"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
android:label="@string/app_name"
android:launchMode="singleTop"
android:theme="@style/AppTheme.NoActionBar"></activity>
<activity
android:name=".ActivityB"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
android:theme="@style/AppTheme.NoActionBar"></activity>
Это, похоже, недостаточно работает , и он никогда не работает, если вы выполните следующее: start app -> start activity A
-> start service (показать уведомление) -> перейти к Activity B
-> открывается уведомление об открытии Activity A
.
мне было интересно, если есть более последовательное решение:
Какая 'деятельность' такова: CATEGORY = LAUNCHER и ACTION = MAIN? –