谷歌文档说:
开始侦听传入消息 接下来,调用 SMS 用户同意 API 的 startSmsUserConsent() 方法开始侦听传入消息。如果您知道发送 SMS 消息的电话号码,请指定它(否则,传递 null)。这样,SMS 用户同意 API 将仅触发来自该号码的消息。
但最后一次更新包括更改: 在以前使用 @RecentlyNonNull 和 @RecentlyNullable 的地方使用了严格的可空性注释(@NonNull 和 @Nullable)。通过此更改,曾经导致空值警告的问题现在在构建 Kotlin 代码或使用 Java 空值检查框架时会导致错误。类似的注释更改将在其他 com.google.android.gms 工件的未来版本中逐步推出。
现在我在使用 SmsRetriever 时崩溃了。因为我在startSmsUserConsent()
更新: 我使用:
implementation 'com.google.android.gms:play-services-auth:19.2.0'
implementation 'com.google.android.gms:play-services-auth-api-phone:17.5.1'
我的代码:
private fun startSmsUserConsent() {
SmsRetriever.getClient(requireContext()).also {
it.startSmsUserConsent(null)
.addOnSuccessListener { Timber.d("LISTENING_SUCCESS") }
.addOnFailureListener { Timber.d("LISTENING_FAILURE") }
}
}
如果我们进入 startSmsUserConsent 我们可以看到:
@RecentlyNonNull
public abstract Task<Void> startSmsUserConsent(@Nullable String var1);
当我将库更新到版本时:
implementation 'com.google.android.gms:play-services-auth:20.0.0'
implementation 'com.google.android.gms:play-services-auth-api-phone:18.0.0'
现在,如果我们进入 startSmsUserConsent,我们将看到:
@NonNull
public abstract Task<Void> startSmsUserConsent(@Nullable String var1);
现在当 startSmsUserConsent 触发时,我会崩溃
E/AndroidRuntime: FATAL EXCEPTION: main
Process: org.***.***, PID: 5183
java.lang.NullPointerException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkNotNullParameter, parameter it
at org.***.***.ui.fragment.account.Account.startSmsUserConsent$lambda-2$lambda-0(Unknown Source:2)
at org.***.***.ui.fragment.account.Account.$r8$lambda$IQ631PjiyctiI5X-7HCb3IAxRs0(Unknown Source:0)
at org.***.***.ui.fragment.account.Account$$ExternalSyntheticLambda6.onSuccess(Unknown Source:2)
at com.google.android.gms.tasks.zzm.run(com.google.android.gms:play-services-tasks@@18.0.0:1)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:223)
at android.app.ActivityThread.main(ActivityThread.java:7656)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
I/Process: Sending signal. PID: 5183 SIG: 9
我的构建:
minSdkVersion 19
targetSdkVersion 31
Test device api 30
更新: 另外,如果我更新
implementation "com.google.android.gms:play-services-maps:18.0.0"
implementation 'com.google.firebase:firebase-bom:29.0.1'
最高版本:
implementation "com.google.android.gms:play-services-maps:18.0.1"
implementation 'com.google.firebase:firebase-bom:29.0.2'
我遇到了同样的崩溃。可能问题出在“com.google.android.gms”中