Я использую Jetpack Navigation с Compose в своем приложении, и мне нужно проанализировать URI, который может происходить из двух разных источников:
1. QR-код, отсканированный внутри приложения.
2. Глубокая ссылка.
Для случая использования QR-кода реализация проста: я сканирую код и передаю значение соответствующему Composable для дальнейшей обработки, используя простой объект данных в качестве маршрут.
Однако у меня возникли проблемы с глубокой ссылкой. Мое требование — получить весь URI, но я не могу использовать свой стандартный маршрут, поскольку компилятор выдает ошибку об отсутствии параметра.
Обходной путь, который я реализовал, заключается в следующем: иметь специальную точку входа Composable Navigation для обработки глубоких ссылок. Оттуда я извлекаю полный URI из намерения и перенаправляю его на свой стандартный маршрут.
Мне интересно, возможно, я что-то пропустил или это просто ограничение SDK . Есть ли у кого-нибудь лучшее решение или рекомендации по реализации этого сценария?
Это моя текущая реализация:
@Serializable data class URIRoute(val uri: String)
fun NavController.navigateToURI(
uri: String,
navOptions: NavOptions? = null
) = navigate(URIRoute(uri), navOptions)
fun NavGraphBuilder.uriScreen() {
composable {
URIScreen()
}
}
fun NavGraphBuilder.uriScreenDeepLink(
navigateToUri: (String) -> Unit
) {
composable(
route = "uriDeepLink",
deepLinks = listOf(
navDeepLink {
uriPattern = BuildConfig.MY_URI
}
)
) { backStackEntry ->
val deepLinkIntent = backStackEntry.arguments?.getParcelable(
NavController.KEY_DEEP_LINK_INTENT,
Intent::class.java
)
navigateToUri(deepLinkIntent?.data.toString())
}
}
@Composable
fun MyNavHost(
modifier: Modifier = Modifier,
navController: NavHostController,
) {
NavHost(
navController = navController,
startDestination = HomeRoute,
modifier = modifier.fillMaxSize(),
) {
...
issuerScreenDeepLink(navController::navigateToURI)
issuerScreen()
...
}
}
Подробнее здесь: https://stackoverflow.com/questions/792 ... h-full-uri
Android Compose с навигацией – DeepLink с полным URI ⇐ Android
Форум для тех, кто программирует под Android
-
Anonymous
1732779992
Anonymous
Я использую Jetpack Navigation с Compose в своем приложении, и мне нужно проанализировать URI, который может происходить из двух разных источников:
1. QR-код, отсканированный внутри приложения.
2. Глубокая ссылка.
Для случая использования QR-кода реализация проста: я сканирую код и передаю значение соответствующему Composable для дальнейшей обработки, используя простой объект данных в качестве маршрут.
Однако у меня возникли проблемы с глубокой ссылкой. Мое требование — получить весь URI, но я не могу использовать свой стандартный маршрут, поскольку компилятор выдает ошибку об отсутствии параметра.
Обходной путь, который я реализовал, заключается в следующем: иметь специальную точку входа Composable Navigation для обработки глубоких ссылок. Оттуда я извлекаю полный URI из намерения и перенаправляю его на свой стандартный маршрут.
Мне интересно, возможно, я что-то пропустил или это просто ограничение SDK . Есть ли у кого-нибудь лучшее решение или рекомендации по реализации этого сценария?
Это моя текущая реализация:
@Serializable data class URIRoute(val uri: String)
fun NavController.navigateToURI(
uri: String,
navOptions: NavOptions? = null
) = navigate(URIRoute(uri), navOptions)
fun NavGraphBuilder.uriScreen() {
composable {
URIScreen()
}
}
fun NavGraphBuilder.uriScreenDeepLink(
navigateToUri: (String) -> Unit
) {
composable(
route = "uriDeepLink",
deepLinks = listOf(
navDeepLink {
uriPattern = BuildConfig.MY_URI
}
)
) { backStackEntry ->
val deepLinkIntent = backStackEntry.arguments?.getParcelable(
NavController.KEY_DEEP_LINK_INTENT,
Intent::class.java
)
navigateToUri(deepLinkIntent?.data.toString())
}
}
@Composable
fun MyNavHost(
modifier: Modifier = Modifier,
navController: NavHostController,
) {
NavHost(
navController = navController,
startDestination = HomeRoute,
modifier = modifier.fillMaxSize(),
) {
...
issuerScreenDeepLink(navController::navigateToURI)
issuerScreen()
...
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79232980/android-compose-with-navigation-deeplink-with-full-uri[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия