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.