google / ground-android

Ground mobile data collection app for Android
http://groundplatform.org
Apache License 2.0
244 stars 115 forks source link

GoogleApiManager$GooglePlayServicesMissingException - Google play services not available #2783

Open anandwana001 opened 5 days ago

anandwana001 commented 5 days ago

GoogleApiManager.installGooglePlayServices com.google.android.ground.system.GoogleApiManager$GooglePlayServicesMissingException - Google play services not available

 Fatal Exception: com.google.android.ground.system.GoogleApiManager$GooglePlayServicesMissingException: Google play services not available
       at com.google.android.ground.system.GoogleApiManager.installGooglePlayServices(GoogleApiManager.kt:45)
       at com.google.android.ground.ui.startup.StartupViewModel.initializeLogin(StartupViewModel.kt:32)
       at com.google.android.ground.ui.startup.StartupFragment$onResume$1.invokeSuspend(StartupFragment.kt:55)
       at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
       at kotlinx.coroutines.internal.DispatchedContinuationKt.resumeCancellableWith(DispatchedContinuation.kt:367)
       at kotlinx.coroutines.intrinsics.CancellableKt.startCoroutineCancellable(Cancellable.kt:30)
       at kotlinx.coroutines.intrinsics.CancellableKt.startCoroutineCancellable$default(Cancellable.kt:25)
       at kotlinx.coroutines.CoroutineStart.invoke(CoroutineStart.kt:110)
       at kotlinx.coroutines.AbstractCoroutine.start(AbstractCoroutine.kt:126)
       at kotlinx.coroutines.BuildersKt__Builders_commonKt.launch(Builders.common.kt:56)
       at kotlinx.coroutines.BuildersKt.launch(:1)
       at kotlinx.coroutines.BuildersKt__Builders_commonKt.launch$default(Builders.common.kt:47)
       at kotlinx.coroutines.BuildersKt.launch$default(:1)
       at com.google.android.ground.ui.startup.StartupFragment.onResume(StartupFragment.kt:53)
       at androidx.fragment.app.Fragment.performResume(Fragment.java:3210)
       at androidx.fragment.app.FragmentStateManager.resume(FragmentStateManager.java:666)
       at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:310)
       at androidx.fragment.app.FragmentStore.moveToExpectedState(FragmentStore.java:114)
       at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1675)
       at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:3259)
       at androidx.fragment.app.FragmentManager.dispatchResume(FragmentManager.java:3191)
       at androidx.fragment.app.Fragment.performResume(Fragment.java:3219)
       at androidx.fragment.app.FragmentStateManager.resume(FragmentStateManager.java:666)
       at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:310)
       at androidx.fragment.app.FragmentStore.moveToExpectedState(FragmentStore.java:114)
       at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1675)
       at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:3259)
       at androidx.fragment.app.FragmentManager.dispatchResume(FragmentManager.java:3191)
       at androidx.fragment.app.FragmentController.dispatchResume(FragmentController.java:285)
       at androidx.fragment.app.FragmentActivity.onResumeFragments(FragmentActivity.java:333)
       at androidx.fragment.app.FragmentActivity.onPostResume(FragmentActivity.java:322)
       at androidx.appcompat.app.AppCompatActivity.onPostResume(AppCompatActivity.java:245)
       at android.app.Activity.performResume(Activity.java:8219)
       at android.app.ActivityThread.performResumeActivity(ActivityThread.java:4814)
       at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:4857)
       at android.app.servertransaction.ResumeActivityItem.execute(ResumeActivityItem.java:54)
       at android.app.servertransaction.ActivityTransactionItem.execute(ActivityTransactionItem.java:45)
       at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:176)
       at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2253)
       at android.os.Handler.dispatchMessage(Handler.java:106)
       at android.os.Looper.loopOnce(Looper.java:201)
       at android.os.Looper.loop(Looper.java:288)
       at android.app.ActivityThread.main(ActivityThread.java:7870)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1009)
anandwana001 commented 5 days ago

@shobhitagarwal1612 Is it the correct behaviour or should we close the app or something in such scenario?

shobhitagarwal1612 commented 5 days ago

https://github.com/google/ground-android/blob/85d53fcb1b513c3db911c7cc81150741d756c31f/ground/src/main/java/com/google/android/ground/ui/startup/StartupFragment.kt#L57

We already handle this exception here.

anandwana001 commented 5 days ago

https://github.com/google/ground-android/blob/85d53fcb1b513c3db911c7cc81150741d756c31f/ground/src/main/java/com/google/android/ground/ui/startup/StartupFragment.kt#L57

We already handle this exception here.

Should we close this issue? This is one of the crash seen in crashlytics today