Навигационное направление, которое соответствует запросу NAVDEEPLINKREQUEST не может быть найдено на навигационном графиAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Навигационное направление, которое соответствует запросу NAVDEEPLINKREQUEST не может быть найдено на навигационном графи

Сообщение Anonymous »

Я пытаюсь внедрить навигацию от уведомления о толчке к экрану через 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»