Estoy intentando utilizar Google Play Service en mi aplicación de Android. Como dice el documento de Google, debemos verificar si la API de Google está disponible antes de usarla. He buscado alguna forma de comprobarlo. Esto es lo que obtuve:
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;
}
Pero cuando voy a la página de Google Api GooglePlayServicesUtil, https://developers.google.com/android/reference/com/google/android/gms/common/GooglePlayServicesUtil
Encuentro que todas las funciones están en desuso . Por ejemplo, el método
GooglePlayServicesUtil.isGooglePlayServicesAvailable (obsoleto)
Y Google recomienda usar:
GoogleApiAvailability.isGooglePlayServicesAvailable .
Sin embargo, cuando intento utilizar GoogleApiAvailability.isGooglePlayServicesAvailable, aparece el mensaje de error:
GooglePlayServicesUtil
ya no (lo que parece una mala práctica para una actualización "menor") pero no veoGoogleApiAvailability
que lo use como reemplazo.Respuestas:
He encontrado la solución. En el
GoogleApiAvailability
, todos los métodos son métodos públicos, mientras que enGooglePlayServicesUtil
todos los métodos son funciones públicas estáticas.Entonces, para usar GoogleApiAvailability, la forma correcta es:
fuente
private final static int PLAY_SERVICES_RESOLUTION_REQUEST = 9000;
¡La clase GooglePlayServicesUtil ya no debería usarse!
Así es como se puede usar la clase GoogleApiAvailability en su lugar, cuando, por ejemplo, se necesita GCM (o cualquier otro servicio de Google):
ACTUALIZAR:
REQUEST_GOOGLE_PLAY_SERVICES
es una constante entera con nombre y valor arbitrarios, a la que se puede hacer referencia en elonActivityResult()
método.Además, llamar
this.onActivityResult()
con el código anterior está bien (también llamasuper.onActivityResult()
en el otro lugar).fuente
GOOGLE_PLAY_SERVICES_PACKAGE
constante de la clase GoogleApiAvailability es la forma de Google de decirle: no use más laGooglePlayServicesUtil
clase.GoogleApiAvailability
clase no existe? Si hacemos referencia a la clase de forma estática, incluso dentro de una expresión condicional, ¿no bloqueará la aplicación?GoogleApiAvailability
es parte de la biblioteca cliente. Entonces su código está compilado en la aplicación => No se preocupe por eso.Tendrá que utilizar GoogleApiAvailability en su lugar:
this
representa elcontext
.fuente
fuente
He agregado esto como divertido en la clase BaseActivity para usar en todos los lugares
úsalo así
O puedes personalizarlo como quieras.
fuente