Вызов onDestroy для активности после нажатия на уведомление о глубокой ссылке в Jetpack ComposeAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Гость
 Вызов onDestroy для активности после нажатия на уведомление о глубокой ссылке в Jetpack Compose

Сообщение Гость »

У меня проблема в Jetpack Compose: действие продолжает вызывать методы onStart -> onStop -> onDestroy после того, как я щелкнул уведомление о навигации по deepLink, хотя я достиг цели ChatScreen
Мой градиент:
реализация "androidx.navigation:navigation-compose:2.7.7"
Манифест Класс уведомлений

Код: Выделить всё

 private fun getPendingIntent(
name: String?,
sender: String,
recipient: String,
context: Context,

): PendingIntent {
val deepLink =
Uri.parse("scheme_chatalyze2://chat_screen2/{$name}/{$sender}/{$recipient}")

val intent = Intent(
Intent.ACTION_VIEW,
deepLink
)

return PendingIntent.getActivity(
context.applicationContext, 0, intent,
PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE
)
}
Навигационный график

Код: Выделить всё

@RequiresApi(Build.VERSION_CODES.S)
@Composable
fun MainScreensNavigationGraph(navHostController: NavHostController) {

Log.d("4444", "  ChatalyzeNavigationGraph loaded")
NavHost(navController = navHostController, startDestination = ScreenRoute.ChatsScreen.route) {
composable(route = ScreenRoute.ChatsScreen.route) {
ChatsScreen(navController = navHostController)
}
composable(
route = ScreenRoute.ChatScreen.route,
deepLinks = listOf(
navDeepLink {
//                    uriPattern = "scheme_chatalyze2://chat_screen2/{$RECIPIENT_NAME}/{$RECIPIENT_PHONE}/{$SENDER_PHONE}"
uriPattern =
"scheme_chatalyze2://chat_screen2/{$RECIPIENT_NAME}/{$RECIPIENT_PHONE}/{$SENDER_PHONE}"
action = Intent.ACTION_VIEW
}
),
arguments = listOf(
navArgument(RECIPIENT_NAME) {
type = NavType.StringType
},
navArgument(RECIPIENT_PHONE) {
type = NavType.StringType
},
navArgument(SENDER_PHONE) {
type = NavType.StringType
}
)
) { entry ->
val recipientName = entry.arguments?.getString(RECIPIENT_NAME)
val recipientPhone = entry.arguments?.getString(RECIPIENT_PHONE)
val senderPhone = entry.arguments?.getString(SENDER_PHONE)
IfLetHelper.execute(recipientName, recipientPhone, senderPhone) {
ChatScreen(
navHostController = navHostController,
recipientName = it[0],
recipientPhone = it[1],
senderPhone = it[2]
)
}
}

}
}
Целевой экран

Код: Выделить всё

@OptIn(ExperimentalComposeUiApi::class)
@Composable
fun ChatScreen(
viewModel: ChatScreenViewModel = hiltViewModel(),
navHostController: NavHostController,
recipientName: String,
recipientPhone: String,
senderPhone: String,
) {
Log.d("4444", " ChatScreen loaded")
}
Я также пытался развлечься getPendingIntent() по-другому, но он все равно заканчивался onDestroy для экрана MainScreenActivity, хотя я достиг цели ChatScreen

Код: Выделить всё

 private fun getPendingIntent(
name: String?,
sender: String,
recipient: String,
context: Context
): PendingIntent {

val deepLink = Uri.parse("scheme_chatalyze2://chat_screen2/{$name}/{$sender}/{$recipient}")
val deepLinkIntent = Intent(
Intent.ACTION_VIEW,
deepLink,
//          context,
//          MainScreensActivity::class.java
)

val resultPendingIntent: PendingIntent = TaskStackBuilder.create(context).run {
addNextIntentWithParentStack(deepLinkIntent)
getPendingIntent(0, PendingIntent.FLAG_IMMUTABLE)
}
return resultPendingIntent
По крайней мере, воссоздайте действие, но останавливайтесь только на onStart.
Я пробовал использовать все типы режимов запуска, но поведение такое же.
Я также пробовал использовать onNewIntent() в MainScreenActivity и вызывать deepLink внутри, но все равно получалось onDestroy для экрана MainScreenActivity, хотя я достиг цели ChatScreen

Источник: https://stackoverflow.com/questions/780 ... n-in-jetpa
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

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

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