【问题标题】:parameter pendingDynamicLinkData specified as non-null is null指定为非 null 的参数 pendingDynamicLinkData 为 null
【发布时间】:2022-01-19 11:13:20
【问题描述】:
private fun getReferralId() {
    Firebase.dynamicLinks
        .getDynamicLink(intent)
        .addOnSuccessListener(this) { pendingDynamicLinkData ->
            pendingDynamicLinkData?.link?.getQueryParameter(
                DEEP_LINK_QUERY_PARAM_REFERRAL_ID
            )?.let { refId ->
                viewModel.saveReferralId(refId)
            }
        }
}

java.lang.NullPointerException:指定为非空的参数是 null:方法 kotlin.jvm.internal.Intrinsics.checkNotNullParameter, 参数pendingDynamicLinkData 在 app.package.activity.MainActivity.getReferralId$lambda-2(未知 来源:7) 在 app.package.activity.MainActivity.$r8$lambda$ANLS0uCuXrQe7RFQ5b0C-RFsBKE(未知 来源:0) 在 app.package.activity.MainActivity$$ExternalSyntheticLambda3.onSuccess(未知 来源:4)

版本:

implementation platform("com.google.firebase:firebase-bom:28.3.1")
implementation "com.google.firebase:firebase-dynamic-links-ktx"

这里有什么问题?

更新

当我更新 play-services-auth 库版本时会发生这种情况

implementation "com.google.android.gms:play-services-auth:19.2.0"
implementation "com.google.android.gms:play-services-auth-api-phone:17.5.1"

到最新版本

implementation "com.google.android.gms:play-services-auth:20.0.0"
implementation "com.google.android.gms:play-services-auth-api-phone:18.0.0"

这有什么关系?

【问题讨论】:

    标签: android firebase firebase-dynamic-links


    【解决方案1】:

    由于播放服务更新,它是 bug in the library。要修复它,您应该明确声明 pendingDynamicLinkData 可以为空。

    像这样:

    private fun getReferralId() {
        Firebase.dynamicLinks
            .getDynamicLink(intent)
            .addOnSuccessListener(this) { pendingDynamicLinkData: PendingDynamicLinkData? ->
                pendingDynamicLinkData?.link?.getQueryParameter(
                    DEEP_LINK_QUERY_PARAM_REFERRAL_ID
                )?.let { refId ->
                    viewModel.saveReferralId(refId)
                }
            }
     }
    

    【讨论】:

      【解决方案2】:

      补充@brwngrldev 的回答。

      更新

      该问题已在最新版本的播放服务库 (https://developers.google.com/android/guides/releases#january_05_2022) 中得到修复

      检查您的项目中有哪些依赖项,并将它们更新到“在 maven.google.com 上发布的工件”中列出的版本。

      例如问题的issue,需要更新以下依赖:

      implementation "com.google.android.gms:play-services-auth:20.0.1"
      implementation "com.google.android.gms:play-services-auth-api-phone:18.0.1"
      

      旧答案

      该错误已在 play-services-base 版本中修复 (https://developers.google.com/android/guides/releases#december_16_2021)

      如果您不希望将该字段显式设置为可为空,则可以通过将这两行添加到应用的 build.gradle 来更新 play-services 库。

      implementation 'com.google.android.gms:play-services-base:18.0.1'
      implementation 'com.google.android.gms:play-services-tasks:18.0.1'
      

      致谢:https://github.com/firebase/firebase-android-sdk/issues/2992#issuecomment-1001847825

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-26
        • 1970-01-01
        • 1970-01-01
        • 2023-03-29
        • 1970-01-01
        • 2019-04-15
        相关资源
        最近更新 更多