97 votes

Comment vérifier la version des services Google Play ?

Dans mon application, je dois vérifier la version des services Google Play (qui est installée sur l'appareil de l'utilisateur). Est-ce possible ? Et si oui, comment puis-je le faire ?

101voto

yital9 Points 593

J'ai trouvé une solution simple :

int v = getPackageManager().getPackageInfo(GoogleApiAvailability.GOOGLE_PLAY_SERVICES_PACKAGE, 0 ).versionCode;

Pero versionCode est déprécié dans l'API 28, vous pouvez donc utiliser la fonction PackageInfoCompat :

long v = PackageInfoCompat.getLongVersionCode(getPackageManager().getPackageInfo(GoogleApiAvailability.GOOGLE_PLAY_SERVICES_PACKAGE, 0 ));

54voto

user2346305 Points 912

Si vous regardez dans le lien fourni par Stan0 vous verrez este :

public static final int GOOGLE_PLAY_SERVICES_VERSION_CODE

Version minimale du pack de services Google Play (déclarée dans AndroidManifest.xml Android:versionCode) afin d'être compatible avec cette version du client. Valeur constante : 3225000 (0x003135a8)

Donc, lorsque vous définissez cela dans votre manifeste et que vous appelez ensuite isGooglePlayServicesAvailable(context) :

public static int isGooglePlayServicesAvailable (Context context)

Vérifie que les services Google Play sont installés et activés sur cet appareil, et que la version installée sur ce périphérique n'est pas plus ancienne que celle requise par ce client.

Renvoie à

  • code d'état indiquant s'il y a eu une erreur. Peut être l'un des éléments suivants dans ConnectionResult : SUCCESS , SERVICE_MISSING , SERVICE_VERSION_UPDATE_REQUIRED , SERVICE_DISABLED , SERVICE_INVALID .

Il s'assurera que l'appareil utilise la version requise par votre application. Si ce n'est pas le cas, vous pouvez prendre des mesures en fonction de la documentation.

Editar

GooglePlayServicesUtil.isGooglePlayServicesAvailable() est déprécié et maintenant GoogleApiAvailability.isGooglePlayServicesAvailable() doit être utilisé à la place.

15voto

Eng. Samer T Points 673

Voici ma solution :

private boolean checkGooglePlayServices() {
        final int status = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);
        if (status != ConnectionResult.SUCCESS) {
            Log.e(TAG, GooglePlayServicesUtil.getErrorString(status));

            // ask user to update google play services.
            Dialog dialog = GooglePlayServicesUtil.getErrorDialog(status, this, 1);
            dialog.show();
            return false;
        } else {
            Log.i(TAG, GooglePlayServicesUtil.getErrorString(status));
            // google play services is updated. 
            //your code goes here...
            return true;
        }
    }

et vous avez deux options, soit écrire votre code directement dans le bloc else tel que commenté, soit utiliser la valeur booléenne retournée pour cette méthode pour écrire du code personnalisé.

7voto

mole363 Points 438

IMPORTANT : GoogleApiAvailability.GOOGLE_PLAY_SERVICES_VERSION_CODE renvoie la version minimale requise par VOTRE application, et non la version des services de jeu qui est installée sur l'appareil de l'utilisateur.

6voto

Shayan Shafiee Points 549
int status = GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(this);
if(status != ConnectionResult.SUCCESS) {
     if(status == ConnectionResult.SERVICE_VERSION_UPDATE_REQUIRED){
        Toast.makeText(this,"please update your google play service",Toast.LENGTH_SHORT).show();
     }
     else {
        Toast.makeText(this, "please download the google play service", Toast.LENGTH_SHORT).show();
     }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X