Как перейти от службы к фрагменту навигации, используя, вероятно, ожидающее намерение?

Я пытаюсь открыть фрагмент с аргументами из моего уведомления. На самом деле, в моем случае у меня есть аудиоплеер, работающий со службой переднего плана с уведомлением, и теперь я хочу перейти к своему фрагменту для этого конкретного аудио, передав идентификатор аудио, когда пользователь нажимает на уведомление.




Ответы (1)


Вы можете открыть свою активность с помощью PendingIntent, а затем открыть свой фрагмент, обработав Intent внутри своей активности.

или этот ответ из похожей темы

NavDeepLinkBuilder:

val pendingIntent = NavDeepLinkBuilder(context)
                     .setComponentName(YourActivity::class.java)
                     .setGraph(R.navigation.your_nav_graph)
                     .setDestination(R.id.your_destination)
                     .setArguments(bundle)
                     .createPendingIntent()

//then

notificationBuilder.setContentIntent(pendingIntent)
person Beyazid    schedule 29.04.2019
comment
это неуклюже, когда много навигации. Разве ребята из Navigation Architecture не сделали для этого никаких Utils? Я имею в виду, что обработка навигации с намерением проще. - person Riajul; 29.04.2019
comment
Вы можете посмотреть этот пост. stackoverflow.com/a/55245317/11181035 - person Beyazid; 29.04.2019
comment
О, сделал это! Спасибо, это должен быть ответ на мой вопрос. - person Riajul; 29.04.2019
comment
Это был действительно очень быстрый ответ, вы, ребята, потрясающие ... еще раз спасибо. - person Riajul; 29.04.2019
comment
Это воссоздает мой фрагмент. Есть ли способ вместо этого создать мой сохраненный фрагмент? - person mhashim6; 07.07.2019
comment
Я не могу воссоздать backstack с этой душой. У меня есть фрагмент A -> B -> C -> D -> E, когда я использую это решение, график только A -> E . Есть идеи? - person AndroidRuntimeException; 06.12.2019
comment
Невозможно начать действие, внутри моего фрагмента отображается исключение нулевого указателя - person Abraham Mathew; 26.03.2020
comment
Я использовал NavDeepLinkBuilder в своей службе и передал контекст службы, и это не сработало. Можете ли вы рассказать, как вы использовали NavDeepLinkBuilder в своей службе переднего плана. - person Himanshu Malik; 04.11.2020
comment
При нацеливании на новый Android S вы должны использовать .createTaskStackBuilder() .getPendingIntent(0, FLAG_IMMUTABLE) вместо .createPendingIntent(), иначе ваше приложение выйдет из строя из-за новых ограничений Pending Intent. - person Tim; 29.05.2021