Android InAppUpdate crash on firebase

104 Views Asked by At

I am using an inAppUpdate inside my Flutter project and invoking Android's InAppUpdate API through a method channel. But getting a fatal crash on Firebase. Here's the stack trace:

Fatal Exception: java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:549)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)
Caused by java.lang.reflect.InvocationTargetException:
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)

Caused by android.content.IntentSender$SendIntentException:
at android.app.Activity.startIntentSenderForResultInner(Activity.java:5519)
at android.app.Activity.startIntentSenderForResult(Activity.java:5487)
at com.google.android.play.core.appupdate.zzf.startIntentSenderForResult(com.google.android.play:app-update@@2.0.1:9)
at com.google.android.play.core.appupdate.zzg.startUpdateFlowForResult(com.google.android.play:app-update@@2.0.1:37)
at com.google.android.play.core.appupdate.zzg.startUpdateFlowForResult(com.google.android.play:app-update@@2.0.1:13)
at com.sunstone.hub.MainActivity.inAppUpdate$lambda-3(MainActivity.kt:35)
at com.google.android.gms.tasks.zzm.run(com.google.android.gms:play-services-tasks@@18.0.2:25)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:224)
at android.app.ActivityThread.main(ActivityThread.java:7592)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)

and here's my native code inside MainActivity

    override fun onResume() {
        super.onResume()
        inAppUpdateOnResume()
    }
    
    private fun inAppUpdate(call: MethodCall, result: MethodChannel.Result) {
        try{
        appUpdateManager= AppUpdateManagerFactory.create(context)
        appUpdateManager?.appUpdateInfo?.addOnSuccessListener { appUpdateInfo ->
            val startUpdate: Boolean = appUpdateInfo.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE && appUpdateInfo.isUpdateTypeAllowed(AppUpdateType.IMMEDIATE)
            if (startUpdate) {
                    appUpdateManager?.startUpdateFlowForResult(appUpdateInfo, AppUpdateType.IMMEDIATE, this, UPDATE_REQUEST_CODE)
            }else{
                result.error("UpdateError", "Failed to start update flow", "Update failed")
            }
        }
       } catch (e: IntentSender.SendIntentException) {
            result.error("UpdateError", "Failed to start update flow", e.message)
        }
    }

    private fun inAppUpdateOnResume(){
        if(appUpdateManager!=null){
            appUpdateManager?.appUpdateInfo?.addOnSuccessListener { appUpdateInfo ->
                if (appUpdateInfo.updateAvailability() == UpdateAvailability.DEVELOPER_TRIGGERED_UPDATE_IN_PROGRESS) {
                    appUpdateManager?.startUpdateFlowForResult(appUpdateInfo, AppUpdateType.IMMEDIATE, this, UPDATE_REQUEST_CODE)
                }
            }
        }
    }

I think it's the line number 35 inside MainActivity which is culprit here i.e. onResumeMethod(). But am not sure.

Thanks in advance.

0

There are 0 best solutions below