Мое приложение имеет 2 действия: основное и подробное.Когда я нажимаю кнопку на главном, она генерирует push-уведомление, которое при нажатии открывает страницу с подробностями.
Проблема в том, что я не верю, что настроил что-либо, чтобы предложить, что действие должно открываться с любым другимсвойства запуска, отличные от стандартных, и их флаги не установлены, чтобы предложить, что моя деятельность открыта по-другому.Однако при нажатии на уведомление и открытии нового действия, когда я нажимаю кнопку «Назад», я возвращаюсь на главный экран, и активные задачи больше не доступны.
Я экспериментально заметил, что если я направлю намерение, вызванное уведомлением, вернуться к основному действию, а не к подробному, то оно будет работать так, как я ожидал.Я могу нажать кнопку в первом экземпляре основного действия, чтобы запустить уведомление, щелкнуть уведомление, чтобы вызвать второй экземпляр основного действия, а затем вернуться назад, чтобы вернуться к исходному экземпляру основного действия.Он даже имеет правильное состояние деталей, представленных в оригинале (текстовое поле, заполненное тем, что я предоставил, чтобы вызвать первое уведомление, чтобы сказать).
Я также обнаружил, что, если я направляю намерение запустить детализированное действие, но устанавливаю привязанность, связанную с активностью, к чему-то еще, что оно работает, просто создавая новую задачу с этим действием какединственная деятельность, связанная с задачей.Но это не то, чего я хочу, и не то, что, по моему мнению, должно происходить в любом случае.
РЕДАКТИРОВАТЬ: я добавил кнопку, которая ведет меня к активности детали с помощью стандартного намерения.Это работает как задумано.Я также добавил кнопку в операцию сведений, которая генерирует уведомление для основной операции, работающей по той же логике, что и кнопка на главной, которая запускает уведомление, чтобы перейти к операции «Подробности», за исключением измененного класса намерений.Нажатие на это создает уведомление и помещает основное действие в уже существующий стек задач, как это стандартно.
Таким образом, похоже, что проблема связана с действием детали, на которое нацелено ожидающее намерение, но я неточно выяснил, что еще, и следование деталям на сайте Android не поможет (хотя это очевидно, так как именно с этого я и начал)
Код:
Создает push-уведомление (найденопо основной деятельности)
fun generatePush2(view: View){
var generalTapIntent = Intent(this, ActivityDetail::class.java)
var pendingIntent: PendingIntent = PendingIntent.getActivity(this, 0, generalTapIntent, 0);
var notificationId = 0;
var builder = NotificationCompat.Builder(this, CHANNEL_ID)
.setSmallIcon(R.drawable.notification_icon)
.setContentTitle("Instant Message")
.setContentText(txt_notification.text)
.setPriority(NotificationCompat.PRIORITY_DEFAULT)
.setContentIntent(pendingIntent) //sets the event to fire when notification is clicked
.setAutoCancel(true) //Removes notification when user taps it
with(NotificationManagerCompat.from(this)){
notify(notificationId, builder.build());
}
}
Подробности манифеста Android (для доказательства)
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".ActivityDetail">
</activity>
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>