Я пытаюсь внедрить навигацию от уведомления о толчке к экрану через DeepLinks, и я заставил его работать для некоторых из моих уведомлений. Но навигация на мой детальный экран просто не хочет работать. Я размышлял об этом в течение нескольких дней, но я не могу понять проблему. Но даже если я заменяю ее случайной строкой, такой как «Привет», возникает та же проблема.
Я также попробовал пару различных вариантов для Navdeeplink, но, возможно, я делаю что-то не так? Я работал с документами, представленными здесь: Kotlin Deeplinks < /p>
Кто -нибудь, у кого была похожая проблема и может мне помочь? Спасибо! < /P>
java.lang.IllegalArgumentException: Navigation destination that matches request
NavDeepLinkRequest{ uri=de.ashman.ontrack://detail/1061474/Superman/
https%3A%2F%2Fimage.tmdb.org%2Ft%2Fp%2Foriginal%2FombsmhYUqR4qqOLOxAyr5V8hbyv.jpg/MOVIE }
cannot be found in the navigation graph ComposeNavGraph(0x0)
startDestination={Destination(0xe19385a7) route=de.ashman.ontrack.navigation.Route.Splash}
< /code>
@Serializable
@SerialName("detail")
data class Detail(
val id: String,
val title: String,
val coverUrl: String,
val type: MediaType
) : Route()
fun NavGraphBuilder.mediaGraph(
navController: NavController
) {
composable(
typeMap = mapOf(
typeOf() to CustomNavType.MediaNavigationParamType,
typeOf() to CustomNavType.MediaTypeNavType,
),
deepLinks = listOf(
navDeepLink { uriPattern = "de.ashman.ontrack://detail/{id}/{title}/{coverUrl}/{type}" },
)
) { backStackEntry ->
val detail: Route.Detail = backStackEntry.toRoute()
...
}
}
...
// I BUILD MY DEEPLINK TO NAVIGATE TO HERE
"recommendation" -> {
val deeplinkUri = Uri.Builder()
.scheme("de.ashman.ontrack")
.authority("detail")
.appendPath(data["mediaId"].toString())
.appendPath(data["mediaTitle"].toString())
.appendPath(data["mediaCoverUrl"].toString())
.appendPath(MediaType.Companion.fromStringOrThrow(data["mediaType"].toString()).name)
.build()
deeplinkUri.toString()
}
// EDIT: CustomNavType
val MediaTypeNavType = object : NavType(
isNullableAllowed = false
) {
override fun get(bundle: SavedState, key: String): MediaType? {
return bundle.read {
getString(key).let { json.decodeFromString(it) }
}
}
override fun parseValue(value: String): MediaType {
return json.decodeFromString(UriCodec.decode(value))
}
override fun put(bundle: SavedState, key: String, value: MediaType) {
bundle.write {
putString(key, json.encodeToString(value))
}
}
override fun serializeAsValue(value: MediaType): String {
return UriCodec.encode(json.encodeToString(value))
}
}
Подробнее здесь: https://stackoverflow.com/questions/796 ... be-found-i
Навигационное направление, которое соответствует запросу NAVDEEPLINKREQUEST не может быть найдено на навигационном графи ⇐ Android
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение