Steps to reproduce this error:
AppUpdateType.FLEXIBLE.No, thanks I'm getting this exception while updating the app via inappupdate on following line.
appUpdateManager?.startUpdateFlowForResult(it, AppUpdateType.FLEXIBLE, activity, REQUEST_CODE_FLEXI_UPDATE) //it == AppUpdateInfo object
Stacktrace:
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:
Android version: 8.0
Phone: Samsung J7
Update
As per documentation,
startUpdateFlowForResultshould only called for onceAppUpdateInfoinstance. For calling again, you must createAppUpdateInfoinstance.
but since its instance depends on below condition, how to make sure its instance newly gets created before calling startUpdateFlowForResult
 appUpdateManager?.appUpdateInfo?.addOnSuccessListener {
            if (it.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE &&
                    it.isUpdateTypeAllowed(AppUpdateType.FLEXIBLE)) {
                appUpdateInfo = it
                updateAvailable.value = true
            } else {
                updateAvailable.value = false
            }
        }
Also how to get progress value of app being downloaded, couldn't find it in documentation. In my case, onActivityResult keeps calling but which key gives progress value?
Also facing another issue with different use case: inappupdate not available after skipping installation
lang. reflect. InvocationTargetException" occurs when java compiler finds 2 different classes with same name in 2 different packages.
Since the InvocationTargetException is caused by another exception thrown by the invoked method, the underlying exception can be found using the getCause() method. Therefore, resolving the InvocationTargetException error equates to finding the actual exception and resolving it.
InvocationTargetException is a checked exception that wraps an exception thrown by an invoked method or constructor. As of release 1.4, this exception has been retrofitted to conform to the general purpose exception-chaining mechanism.
The problem is that you are trying to trigger startUpdateFlowForResult with the same AppUpdateInfo twice.
As @Slaw suggested, after a failed or canceled update you need to do appUpdateManager.appUpdateInfo.addOnSuccessListener again in order to have another instance of AppUpdateInfo to make second call to startUpdateFlowForResult
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With