Я пытаюсь реализовать неявную обработку глубоких ссылок в моем приложении, но следующий код не работает, и onNewIntent в моем отдельном действии не вызывает, но всегда открывается startDestination из навигационного графика.
На моем навигационном графике у меня есть следующая глубокая ссылка для фрагмента
<deepLink
android:id="@+id/deepLink"
app:uri="people/{uuid}" />
Затем я добавил навигацию. график для файла манифеста между тегом активности
<nav-graph android:value="@navigation/app_graph" />
После того, как я включил реализацию NewIntent в MainActivity, он выглядит как
override fun onNewIntent(intent: Intent?) {
super.onNewIntent(intent)
findNavController(R.id.fragmentContainer).handleDeepLink(intent)
}
Создание ожидающего намерения происходит следующим образом:
val intent = Intent(context, MainActivity::class.java).apply {
flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK
data = Uri.parse("people/$uuid")
}
val pendingIntent = PendingIntent.getActivity(
context,
PENDING_INTENT_REQUEST_CODE,
intent,
0
)
И, наконец, создание диалога
val notification = NotificationCompat.Builder(context, CHANNEL_ID)
// not important
.setContentIntent(pendingIntent)
.setPriority(NotificationCompat.PRIORITY_DEFAULT)
.build()
NotificationManagerCompat
.from(context)
.notify(Random.nextInt(), notification)