int v = getPackageManager().getPackageInfo(GoogleApiAvailability.GOOGLE_PLAY_SERVICES_PACKAGE, 0 ).versionCode;
это вернет версию службы воспроизведения, а затем просто проверьте ее программу перед .signInWithEmailAndPassword ()
Проблема вызвана определенным условием, когда у вас есть 2 проблемы с Google Play Services (GPS).Поскольку GPS также отключен, Google Play Store (GPT) не будет работать на устройстве.
Если ваши службы Google Play устарели, то вызовите showErrorDialogFragment, используя код ошибки ConnectionResult.SERVICE_VERSION_UPDATE_REQUIRED, (код ошибки2), который работает нормально.
Но если ваш GPS отключен и устарел, то есть проблема с тем, как работает googleApiAvailability api. Если вы вызываете isGooglePlayServicesAvailable (), он вернет первыйошибка, которую он находит, но это не обязательно ошибка, которую вы хотите устранить в первую очередь.Проблема в том, что вы знаете, что у вас есть еще одна ошибка, и вам нужно сначала ее устранить.isGooglePlayServicesAvailable () не помогает в этом отношении.
В моем случае игровые сервисы отключены и устарели.Итак, подход заключается в том, чтобы сначала вызвать showErrorDialogFragment, и вы получите код ошибки ответа для SERVICE_VERSION_UPDATE_REQUIRED.
Android попытается разрешить его, отправив pendingIntent для запуска Google Play Store (GPT) для обновления GPS, ноэто потерпит неудачу, поскольку GPT зависит от ВКЛЮЧЕННОЙ версии GPS.Поскольку вы вызываете showErrorDialogFragment, он вызовет onActivityResult после сбоя при запуске GPT.
Следующим шагом является настройка onActivityResult.Мне нужно было снова проверить isGooglePlayServicesAvailable ().Если вы по-прежнему получаете тот же код ошибки (SERVICE_VERSION_UPDATE_REQUIRED), вам необходимо снова вызвать showErrorDialogFragment в onActivityResult, но на этот раз передать ему другой код ошибки, ConnectionResult.SERVICE_DISABLED (код ошибки 3).Это приведет пользователя к менеджеру приложения, чтобы сначала ВКЛЮЧИТЬ сервисы Google Play.Затем, возвращаясь к приложению, вам нужно проверить isGooglePlayServicesAvailable, и он должен обнаружить, что сервисы Google все еще устарели.Если вы успешно обновите приложение, onActivityResult позволит вам определить, что isGooglePlayServicesAvailable является успешным, и вы можете продолжить.Обратите внимание, что вам может понадобиться добавить флаг, чтобы вы могли снова проверить совместимость сервисов Google Play, а не продолжать выполнение процесса запуска.
(Таким образом, на самом деле googleApiAvailability должно возвращать отключенную ошибку).сначала (т.е. ConnectionResult.SERVICE_DISABLED или код ошибки 3), так что вы можете сначала разрешить это, прежде чем пытаться обновить GPS.)