Я пишу приложение с двумя основными действиями:
- ГлавнаяАктивность
- ДиалогАктивность
MainActivity — это типичное окно приложения, а DialogActivity — это активность, которую я стилизовал так, чтобы она отображалась как диалоговое окно, установив android:theme="@style/Theme.AppCompat.Light.Dialog"
Изнутри MainActivity я могу запустить DialogActivity со следующим кодом.
val intent = Intent(this, DialogActivity::class.java)
startActivity(intent)
Затем диалоговое окно появляется поверх основного, например:
В дополнение к этому, я также хотел бы иметь возможность запускать диалоговое окно, нажав на уведомление. Если я открою другое приложение и нажму на уведомление, диалоговое окно появится поверх другого приложения, как я хочу:
Однако, если в настоящее время у меня открыта MainActivity, а затем нажмите на уведомление, диалоговое окно появится поверх пустого фона:
Это происходит несмотря на то, что диалог появляется «поверх» основного окна активности на обзорном экране:
Итак, вот мой вопрос: если у меня есть MainActivity на переднем плане, а затем я запускаю DialogActivity, нажав на соответствующее уведомление, могу ли я сделать так, чтобы DialogActivity отображалась поверх открытого окна MainActivity?
Другими словами, когда я нажимаю на уведомление, я хочу, чтобы оно выглядело как первое изображение, если MainActivity уже открыто на переднем плане, как второе изображение, если другое приложение находится на переднем плане, и как третье, только если приложений нет. в настоящее время открыто.
Я использую следующий PendingIntent для запуска действия из уведомления. Возможно, есть специальный набор флагов намерений, которые делают то, что я хочу? Или, может быть, мне нужно сделать что-то более радикальное, например, объединить два отдельных действия в одно?
val intent = Intent(this, DialogActivity::class.java)
intent.flags = 0
val pendingIntent = PendingIntent.getActivity(this, 0, intent, 0)
Скриншоты взяты из эмулятора под управлением Android 9 (уровень API 28).
MainActivity
из уведомления вместоDialogActivity
и передать некоторые данные вMainActivity
, чтобы указать, что вы запускаете его из уведомления, и если эти данные доступны, запуститеDialogActivity
- person hiddeneyes02   schedule 26.10.2019