首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SmsRetrieverClient崩溃上一次更新

SmsRetrieverClient崩溃上一次更新
EN

Stack Overflow用户
提问于 2021-12-16 13:17:26
回答 1查看 524关注 0票数 2

谷歌文档说:

接下来,

开始监听传入的消息,调用SMS用户同意API的startSmsUserConsent()方法开始侦听传入的消息。如果您知道短信将从哪个电话号码发出,将指定它(否则,传递空)。这样,SMS用户同意API只会触发来自这个号码的消息。

,但上一次更新包括更改:在以前使用@RecentlyNonNull和@RecentlyNullable的地方使用的是严格的空注释(@NonNull和@Nullable)。有了这一更改,在构建Kotlin代码或使用Java检查框架时,曾经引起空警告的内容现在将导致错误。类似的注释更改将在其他com.google.android.gms工件的未来版本中逐步推出。

现在,当我使用SmsRetriever时,我会崩溃。因为我在startSmsUserConsent()中指定null

更新:我使用的

代码语言:javascript
复制
implementation 'com.google.android.gms:play-services-auth:19.2.0'
implementation 'com.google.android.gms:play-services-auth-api-phone:17.5.1'

我的代码:

代码语言:javascript
复制
private fun startSmsUserConsent() {
    SmsRetriever.getClient(requireContext()).also {
        it.startSmsUserConsent(null)
            .addOnSuccessListener { Timber.d("LISTENING_SUCCESS") }
            .addOnFailureListener { Timber.d("LISTENING_FAILURE") }
    }
}

如果我们进入startSmsUserConsent内部,我们可以看到以下内容:

代码语言:javascript
复制
@RecentlyNonNull
public abstract Task<Void> startSmsUserConsent(@Nullable String var1);

当我将库更新为版本时:

代码语言:javascript
复制
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,我们将看到:

代码语言:javascript
复制
@NonNull
public abstract Task<Void> startSmsUserConsent(@Nullable String var1);

,现在当startSmsUserConsent开火时,我会崩溃

代码语言:javascript
复制
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

My build:

代码语言:javascript
复制
minSdkVersion 19
targetSdkVersion 31
Test device api 30

更新:如果我更新也会更新

代码语言:javascript
复制
implementation "com.google.android.gms:play-services-maps:18.0.0"
implementation 'com.google.firebase:firebase-bom:29.0.1'

到版本:

代码语言:javascript
复制
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"的某个地方

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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发布说明.。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70379687

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档