J'essaie d'utiliser le service Google Play dans mon application Android. Comme le dit le document Google, nous devons vérifier si l'API Google est disponible avant de l'utiliser. J'ai cherché un moyen de le vérifier. Voici ce que j'ai:
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;
}
Mais lorsque je vais sur la page Google Api GooglePlayServicesUtil, https://developers.google.com/android/reference/com/google/android/gms/common/GooglePlayServicesUtil
Je trouve que toutes les fonctions sont obsolètes . Par exemple, la méthode
GooglePlayServicesUtil.isGooglePlayServicesAvailable (obsolète)
Et Google recommande d'utiliser:
GoogleApiAvailability.isGooglePlayServicesAvailable .
Cependant, lorsque j'essaie d'utiliser GoogleApiAvailability.isGooglePlayServicesAvailable, j'obtiens le message d'erreur:
GooglePlayServicesUtil
je suis parti (ce qui semble être une mauvaise pratique pour une mise à jour "mineure") mais je ne vois pasGoogleApiAvailability
à utiliser en remplacement.Réponses:
J'ai trouvé la solution. Dans le
GoogleApiAvailability
, toutes les méthodes sont des méthodes publiques, tandis que dansGooglePlayServicesUtil
toutes les méthodes sont des fonctions publiques statiques.Donc, pour utiliser GoogleApiAvailability, la bonne façon est:
la source
private final static int PLAY_SERVICES_RESOLUTION_REQUEST = 9000;
La classe GooglePlayServicesUtil ne devrait plus être utilisée!
Voici comment la classe GoogleApiAvailability peut être utilisée à la place - lorsque, par exemple, GCM (ou tout autre service Google) est nécessaire:
METTRE À JOUR:
REQUEST_GOOGLE_PLAY_SERVICES
est une constante entière avec un nom et une valeur arbitraires, auxquels laonActivityResult()
méthode peut faire référence .De plus, appeler
this.onActivityResult()
le code ci-dessus est correct (vous appelez égalementsuper.onActivityResult()
à l'autre endroit).la source
GOOGLE_PLAY_SERVICES_PACKAGE
constante de la classe GoogleApiAvailability est le moyen de Google de vous dire: n'utilisez plus laGooglePlayServicesUtil
classe.GoogleApiAvailability
classe n'existe pas? Si nous référençons la classe de manière statique, même dans une expression conditionnelle, ne plantera-t-elle pas l'application?GoogleApiAvailability
fait partie de la bibliothèque cliente. Donc, son code est compilé dans l'application => Ne vous en faites pas.Vous devrez utiliser GoogleApiAvailability à la place:
this
représente lecontext
.la source
la source
J'ai ajouté cela comme amusant dans la classe BaseActivity à utiliser dans tous les endroits
utilise-le comme ça
Ou vous pouvez le personnaliser comme vous le souhaitez.
la source