2017-02-02 1 views
4

То, что яОбнаружение сервисов Google Play установлен и Play Services, используемые в App

У меня есть приложение, которое сильно полагается на Google Play Services (для Firebase), так что мне нужно устройство пользователя, чтобы Play Services установлен. Что еще более важно, версия Play Services, установленная на устройстве, должна быть равна или выше, чем Службы воспроизведения, которые я использую в своем приложении.

Что я Хочу

Я хочу, чтобы показать сообщение (может быть диалог или закусочная) в заставке моего приложения, если пользователь использует старую версию Play Services, что версия я таргетирования в мое приложение.

Как и в настоящее время, версия Служб Play, которую я использую в своем приложении, - 10.0.1. Очевидно, это название версии.

Я знаю, что могу это сделать,

int v = getPackageManager().getPackageInfo("com.google.android.gms", 0).versionName; 

Но я не могу сравнить версии Play Services, установленных в устройстве и Play Services я использую? Должен ли я делать это, используя versionCode вместо versionName? Если да, то как узнать код версии Play Services, который я использую?

Или есть другой (или лучший) способ сделать это?

+0

Вы хотите знать, сервисы Google Play VersionCode? мобильного? –

+0

Вы даже прочитали вопрос? –

+0

ОК, что бы вы ни старались помочь мне с моим плохим английским языком. Удачи –

ответ

10

Это метод я использую .. веселит

public static boolean checkPlayServices(Context context) { 
    final int PLAY_SERVICES_RESOLUTION_REQUEST = 9000; 
    GoogleApiAvailability api = GoogleApiAvailability.getInstance(); 
    int resultCode = api.isGooglePlayServicesAvailable(context); 
    if (resultCode != ConnectionResult.SUCCESS) { 
     if (api.isUserResolvableError(resultCode)) 
      api.getErrorDialog(((Activity) context), resultCode, PLAY_SERVICES_RESOLUTION_REQUEST).show(); 
     else { 
      showToast(context, "This device is not supported.", true); 
      ((Activity) context).finish(); 
     } 
     return false; 
    } 
    return true; 
} 
+3

Чтобы немного расширить этот ответ, вы можете проверить следующее условие 'resultCode == SERVICE_VERSION_UPDATE_REQUIRED'. Полный список кодов результатов и их значение вы можете проверить [документы] (https://developers.google.com/android/reference/com/google/android/gms/common/ConnectionResult) –

+0

@ NicolásCarrasco да , его можно рассматривать как «успех», если что-то не может быть сделано только с использованием последней версии. –

0

ответ Усмана хорошо, кроме того, вы можете позвонить GoogleApiAvailability.makeGooglePlayServicesAvailable() в случае неуспешных кода результата. Как это:

int resultCode = GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(this); 
if (resultCode != ConnectionResult.SUCCESS) { 
    GoogleApiAvailability.getInstance().makeGooglePlayServicesAvailable(this); 
} 

Более подробной информации о результирующих кодах и т.д. доступны в документации здесь: https://developers.google.com/android/reference/com/google/android/gms/common/GoogleApiAvailability

Смежные вопросы