Когда требуется обновление версии Службы возврата isGooglePlayServicesAvailable?

согласно документации GooglePlayServicesUtil.isGooglePlayServicesAvailable возвращает SERVICE_VERSION_UPDATE_REQUIRED когда "установленная версия служб Google Play устарела".

означает ли это, что в play Маркете появилась новая версия сервисов google play?
Означает ли это, что приложение нуждается в более новой версии, чем та, которая в настоящее время установлена на устройстве?

Как это проверить сделано?

5 ответов


это означает, что версия службы Google play, которую вы включили в свое приложение, выше, чем версия, установленная на устройстве пользователей. пользователь должен обновить свои сервисы google play, чтобы ваше приложение работало правильно.

если результат возвращается с этой ошибкой, вы можете просто вызвать этот метод, чтобы предупредить пользователя, что им нужно обновить, и он доставит их туда.

GooglePlayServicesUtil.getErrorDialog(result, this, GOOGLE_PLAY_SERVICE_UPDATE_CODE).show();

result результат isGooglePlayServicesAvailable метод


вот документы для GooglePlayServicesUtil: http://developer.android.com/reference/com/google/android/gms/common/GooglePlayServicesUtil.html.

вот где они говорят о "обеспечении", что пользователь установил его: https://developer.android.com/google/play-services/setup.html#ensure

это взято из официального исходного кода iosched 2014 здесь: https://github.com/google/iosched/blob/0a90bf8e6b90e9226f8c15b34eb7b1e4bf6d632e/android/src/main/java/com/google/samples/apps/iosched/util/PlayServicesUtils.java

public class PlayServicesUtils {

    public static boolean checkGooglePlaySevices(final Activity activity) {
        final int googlePlayServicesCheck = GooglePlayServicesUtil.isGooglePlayServicesAvailable(activity);
        switch (googlePlayServicesCheck) {
            case ConnectionResult.SUCCESS:
                return true;
            case ConnectionResult.SERVICE_DISABLED:
            case ConnectionResult.SERVICE_INVALID:
            case ConnectionResult.SERVICE_MISSING:
            case ConnectionResult.SERVICE_VERSION_UPDATE_REQUIRED:
                Dialog dialog = GooglePlayServicesUtil.getErrorDialog(googlePlayServicesCheck, activity, 0);
                dialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
                    @Override
                    public void onCancel(DialogInterface dialogInterface) {
                        activity.finish();
                    }
                });
                dialog.show();
        }
        return false;
    }
}

вот как использовать его в Activity: https://github.com/google/iosched/blob/cf1f30b4c752f275518384a9b71404ee501fc473/android/src/main/java/com/google/samples/apps/iosched/ui/BaseActivity.java

@Override
protected void onResume() {
    super.onResume();

    // Verifies the proper version of Google Play Services exists on the device.
    PlayServicesUtils.checkGooglePlaySevices(this);
}

означает ли это, что в play Маркете появилась новая версия сервисов google play?

С сайт последнее обновление было включено декабря

означает ли это, что приложение нуждается в более новой версии, чем тот, который в настоящее время установлен в устройстве?

вы можете проверить, имеет ли устройство более высокую версиюGoogle Play Service чем один на вашем приложении, как так:

    int status = GooglePlayServicesUtil.isGooglePlayServicesAvailable( getApplicationContext() );
if(status == ConnectionResult.SUCCESS) {
   //OK
}else if(status == ConnectionResult.SERVICE_VERSION_UPDATE_REQUIRED){
   Toast.makeText(context,"please udpate your google play service",Toast.LENGTH_SHORT).show
}

документация была обновлена, теперь понятно:

проверяет, что службы Google Play установлены и включены на этом устройство, и что версия, установленная на этом устройстве не старше одна требовали этого клиента.


обратите внимание, что все текущие ответы ссылаются на GooglePlayServicesUtil, который теперь устарел. См.GooglePlayServicesUtil vs GoogleApiAvailability подробнее о том, как выполнить проверку совместимости версий служб Google Play.