如果重试,则在 inappupdate android 时出现 java.lang.reflect.InitationTargetException

2023-11-22

重现此错误的步骤:

  1. 单击更新按钮,它会打开更新应用程序对话框,因为它是AppUpdateType.FLEXIBLE.
  2. Click No, thanks
  3. 再次尝试更新。应用程序崩溃并出现以下错误:

我在通过下一行的 inappupdate 更新应用程序时遇到此异常。

appUpdateManager?.startUpdateFlowForResult(it, AppUpdateType.FLEXIBLE, activity, REQUEST_CODE_FLEXI_UPDATE) //it == AppUpdateInfo object

堆栈跟踪:

java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:451)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1408)
Caused by: java.lang.reflect.InvocationTargetException
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:441)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1408) 
Caused by: android.content.IntentSender$SendIntentException
        at android.app.Activity.startIntentSenderForResultInner(Activity.java:4878)
        at android.app.Activity.startIntentSenderForResult(Activity.java:4847)
        at androidx.fragment.app.FragmentActivity.startIntentSenderForResult(FragmentActivity.java:796)
        at android.app.Activity.startIntentSenderForResult(Activity.java:4814)
        at androidx.fragment.app.FragmentActivity.startIntentSenderForResult(FragmentActivity.java:781)
        at com.google.android.play.core.appupdate.b.startUpdateFlowForResult(Unknown Source:22)
        at newProfile.NewProfileFragment.startForInAppUpdate(NewProfileFragment.kt:752)
        at newProfile.NewProfileFragment.access$startForInAppUpdate(NewProfileFragment.kt:60)
        at newProfile.NewProfileFragment$setupAppUpdate$3.onClick(NewProfileFragment.kt:682)
        at android.view.View.performClick(View.java:6935)
        at android.widget.TextView.performClick(TextView.java:12752)
        at android.view.View$PerformClick.run(View.java:26214)
        at android.os.Handler.handleCallback(Handler.java:790)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:164)

Details:

安卓版本:8.0
手机:三星J7

Update

根据文档,startUpdateFlowForResult应该只调用一次AppUpdateInfo实例。要再次调用,您必须创建AppUpdateInfo实例。

但由于其实例取决于以下条件,如何确保在调用之前新创建其实例startUpdateFlowForResult

 appUpdateManager?.appUpdateInfo?.addOnSuccessListener {
            if (it.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE &&
                    it.isUpdateTypeAllowed(AppUpdateType.FLEXIBLE)) {
                appUpdateInfo = it
                updateAvailable.value = true
            } else {
                updateAvailable.value = false
            }
        }

还有如何获得progress正在下载的应用程序的价值,在文档中找不到它。就我而言, onActivityResult 不断调用,但哪个键提供进度值?

还面临着不同用例的另一个问题:跳过安装后 inappupdate 不可用


问题是你正在尝试触发startUpdateFlowForResult与相同的AppUpdateInfo twice.

正如 @Slaw 所建议的,在更新失败或取消后,您需要执行以下操作appUpdateManager.appUpdateInfo.addOnSuccessListener再次为了有另一个实例AppUpdateInfo拨打第二次电话startUpdateFlowForResult

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如果重试,则在 inappupdate android 时出现 java.lang.reflect.InitationTargetException 的相关文章

随机推荐