谷歌文档说:
接下来,
开始监听传入的消息,调用SMS用户同意API的startSmsUserConsent()方法开始侦听传入的消息。如果您知道短信将从哪个电话号码发出,将指定它(否则,传递空)。这样,SMS用户同意API只会触发来自这个号码的消息。
,但上一次更新包括更改:在以前使用@RecentlyNonNull和@RecentlyNullable的地方使用的是严格的空注释(@NonNull和@Nullable)。有了这一更改,在构建Kotlin代码或使用Java检查框架时,曾经引起空警告的内容现在将导致错误。类似的注释更改将在其他com.google.android.gms工件的未来版本中逐步推出。
现在,当我使用SmsRetriever时,我会崩溃。因为我在startSmsUserConsent()中指定null
更新:我使用的:
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: 9My build:
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',我得到了同样的crash.Probably,问题就在"com.google.android.gms"的某个地方
发布于 2021-12-18 17:27:51
这个问题已经解决了.
发布说明谷歌服务:https://developers.google.com/android/guides/releases
2021年12月16日,
对play的最新更新--服务--基础和播放--任务解决了在处理任务时可能导致运行时NPEs (NullPointerException)的问题。如果使用2021年12月09发行版中列出的任何库版本,则可以通过显式依赖于play-services-base和play-services-任务的18.0.1版本来避免运行时NPEs。将以下内容添加到build.gradle的依赖项部分:
实现'com.google.android.gms:play-services-base:18.0.1‘implementation 'com.google.android.gms:play-services-tasks:18.0.1’在2022年1月,我们计划在09年12月发布其他工件的新版本,新的POM依赖于18.0.1版本的play服务基础和play服务任务。
Firebase的最新更新包括对以下内容的更改:
Firebase安卓BoM (材料清单)用于的Firebase这个Firebase发布版采用了最新版本的play服务基础和play服务任务(v18.0.1)来解决2021年12月09发行版中描述的问题。
有关更多信息,请参见Firebase Android发布说明.。
https://stackoverflow.com/questions/70379687
复制相似问题