Я пытаюсь использовать сервис Google Play в своем приложении для Android. Как говорится в документе Google, нам нужно проверить, доступен ли Google API, прежде чем использовать его. Я искал способ проверить это. Вот что у меня получилось:
private boolean checkPlayServices() {
int resultCode = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);
if (resultCode != ConnectionResult.SUCCESS) {
if (GooglePlayServicesUtil.isUserRecoverableError(resultCode)) {
GooglePlayServicesUtil.getErrorDialog(resultCode, this,
PLAY_SERVICES_RESOLUTION_REQUEST).show();
} else {
Log.i(TAG, "This device is not supported.");
finish();
}
return false;
}
return true;
}
Но когда я перехожу на страницу Google Api GooglePlayServicesUtil, https://developers.google.com/android/reference/com/google/android/gms/common/GooglePlayServicesUtil
Я считаю, что все функции устарели . Например, метод
GooglePlayServicesUtil.isGooglePlayServicesAvailable (не рекомендуется)
И Google рекомендует использовать:
GoogleApiAvailability.isGooglePlayServicesAvailable .
Однако, когда я пытаюсь использовать GoogleApiAvailability.isGooglePlayServicesAvailable, я получаю сообщение об ошибке:
GooglePlayServicesUtil
больше нет (что кажется плохой практикой для «незначительного» обновления), но я не собираюсьGoogleApiAvailability
использовать его в качестве замены.Ответы:
Я нашел решение. В
GoogleApiAvailability
, все методы являются открытым методом, в то время какGooglePlayServicesUtil
все методы являются статическими общественными функциями.Итак, чтобы использовать GoogleApiAvailability, правильный способ:
источник
private final static int PLAY_SERVICES_RESOLUTION_REQUEST = 9000;
Класс GooglePlayServicesUtil больше использовать нельзя!
Вот как можно использовать вместо этого класс GoogleApiAvailability - например, когда требуется GCM (или любой другой сервис Google):
ОБНОВИТЬ:
REQUEST_GOOGLE_PLAY_SERVICES
- целочисленная константа с произвольным именем и значением, на которую можно ссылаться вonActivityResult()
методе.Кроме того, можно позвонить
this.onActivityResult()
по приведенному выше коду (вы также звонитеsuper.onActivityResult()
в другом месте).источник
GOOGLE_PLAY_SERVICES_PACKAGE
константу из класса GoogleApiAvailability - это способ Google сказать вам: больше не используйте этотGooglePlayServicesUtil
класс.GoogleApiAvailability
класс не существует? Если мы будем ссылаться на класс статически, даже внутри условного выражения, не приведет ли это к сбою приложения?GoogleApiAvailability
- часть клиентской библиотеки. Итак, его код скомпилирован в приложение => Не беспокойтесь об этом.Вместо этого вам придется использовать GoogleApiAvailability :
this
представляет собойcontext
.источник
источник
Я добавил это как развлечение в класс BaseActivity, чтобы использовать его во всех местах.
используйте это так
Или вы можете настроить его как хотите.
источник