AppUpdateManager getResult()在某些手机上崩溃

时间:2019-06-22 15:58:52

标签: android google-play

我有一些非常简单的代码来检查是否有更新:

com.google.android.play.core.tasks.Task<AppUpdateInfo> appUpdateInfo = AppUpdateManagerFactory.create(this).getAppUpdateInfo();
appUpdateInfo.addOnCompleteListener(new com.google.android.play.core.tasks.OnCompleteListener<AppUpdateInfo>() {
    @Override
    public void onComplete(com.google.android.play.core.tasks.Task<AppUpdateInfo> task) {
        AppUpdateInfo result = task.getResult();
    }
}

电话崩溃是在task.getResult()行上。最初,它是在装有 Android <5.0 的手机上使用的,但是现在我已解决了这一问题,我已经看到至少有一部 Android 9 手机崩溃。在已经运行此功能的200个Beta用户中,只有一部手机崩溃了。

Fatal Exception: com.google.android.play.core.tasks.RuntimeExecutionException: com.google.android.play.core.install.InstallException: Install Error: -3
       at com.google.android.play.core.tasks.k.getResult + 18(k.java:18)
       at MyApplication$7.onComplete + 1(MyApplication.java:1103)
       at com.google.android.play.core.tasks.a.run + 23(a.java:23)
       at android.os.Handler.handleCallback + 873(Handler.java:873)
       at android.os.Handler.dispatchMessage + 99(Handler.java:99)
       at android.os.Looper.loop + 193(Looper.java:193)
       at android.app.ActivityThread.main + 6940(ActivityThread.java:6940)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run + 537(RuntimeInit.java:537)
       at com.android.internal.os.ZygoteInit.main + 858(ZygoteInit.java:858)

代码-3的意思是ERROR_API_NOT_AVAILABLE,所以我是否只需要尝试抓住RuntimeException?当已经有一种返回错误代码的方法时,这似乎是一个丑陋的解决方案。

1 个答案:

答案 0 :(得分:1)

Play核心库安装有时也会失败。请检查其release notes以获取指示。

我认为您遇到的问题是Play核心库的安装不完整。是的,如果您仍在使用com.google.android.play:core:1.5.0,则可以考虑切换到版本1.6.0

dependencies {
    implementation 'com.google.android.play:core:1.6.0'
}

如果由于安装不完全而导致设备中的Play Core API出现问题,则无法获得该API的错误代码(不存在)。因此,为避免这种RuntimeException,恐怕您可能不得不采用try/catch方法。

希望有帮助!