当我尝试使用应用程序链接向显示的活动发送意图时,会创建新活动

问题描述 投票:0回答:1

我的应用程序使用自定义选项卡和App Link实现OAuth 2.0,并通过

onNewIntent()
获取通过App Link通过重定向URL发送的数据。
我正在尝试发送一种方法,将此数据发送到
ViewModel
Activity
,以及将此
Activity
显示到服务器端时发送的一些数据以及使用
SavedStateHandle
存储的一些数据。
根据我的 Firebase Crashlytics 和客户报告,根据设备的不同,不会调用
onNewIntent()
,但会调用创建新活动的
onCreate()

然而,此时
SavedStateHandle
中存储的数据并不存在,并且由于它不是用
putExtra()
创建的,所以没有数据,出现
NullPointException
。 根据我的知识,我认为这是不可能的情况,因为还有如下所示的附加设置,但是我可以知道为什么会这样创建一个新的
Activity
吗?

  1. 启动方式采用singleTask。
  2. 显示activity时,不单独设置flag。
  3. 使用多模块,不使用compose。
  4. 我们添加了处理以禁用不保留活动模式,因此如果发生这种情况,将无法到达该活动。
  5. 使用Kotlin,Activity lib版本为1.4.0,Lifecycle版本为2.4.1
  6. 无论操作系统版本和设备品牌如何,都会发生这种情况。
android android-activity viewmodel applinks android-savedstate
1个回答
0
投票

感谢评论,我就这样解决了。

  1. 将运行 chrome 自定义选项卡的 Activity 与 App Link 的 Activity 分开。
  2. 将以下标志添加到自定义选项卡的意图中。
.intent.apply {
    flags = Intent.FLAG_ACTIVITY_NO_HISTORY
    addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
}
  1. 将 App Link 活动的启动模式设置为
    singleTop
  2. 在运行 chrome 自定义选项卡的 Activity 中运行 chrome 自定义选项卡之前,将该 Activity 所需的 App Link 所需数据保存为 SharedPrefences。
  3. 从 App Link 活动中的 SharedPreferences 检索数据后,重置 SharedPreferences 中的数据。 (作为参考,我使用了 EncryptedSharedPreferences。)
© www.soinside.com 2019 - 2024. All rights reserved.