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 ?

6voto

Tapan parmar Points 876

Depuis les dernières mises à jour, j'ai fini par avoir ce code, j'ai créé une méthode pratique pour gérer tout ce qui s'y rapporte

Tous les détails relatifs à la disponibilité du service et les détails connexes sont disponibles. aquí .

 private void checkPlayService(int PLAY_SERVICE_STATUS)
    {
        switch (PLAY_SERVICE_STATUS)
        {
            case ConnectionResult.API_UNAVAILABLE:
                //API is not available
                break;
            case ConnectionResult.NETWORK_ERROR:
                //Network error while connection 
                break;
            case ConnectionResult.RESTRICTED_PROFILE:
                //Profile is restricted by google so can not be used for play services
                break;
            case ConnectionResult.SERVICE_MISSING:
                //service is missing
                break;
            case ConnectionResult.SIGN_IN_REQUIRED:
                //service available but user not signed in
                break;
            case ConnectionResult.SUCCESS:
                break;
        }
    }

Je l'utilise comme ça,

GoogleApiAvailability avail;
 int PLAY_SERVICE_STATUS = avail.isGooglePlayServicesAvailable(this);
 checkPlayService(PLAY_SERVICE_STATUS);

Et pour la version GoogleApiAvailability.GOOGLE_PLAY_SERVICES_VERSION_CODE; vous donnera.

Et l'une des réponses les plus utiles que j'ai trouvées au cours de mes recherches. est ici.

2voto

Dandan Meng Points 41
int apkVersion = GoogleApiAvailability.getInstance().getApkVersion(getContext());

obtiendra le même résultat que :

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

Mais le second doit être placé dans un try-catch.

1voto

Simon Gong Points 325

J'ai rencontré le même problème ce matin. Et je l'ai résolu grâce aux conseils de stan0. Merci stan0.

Une seule modification est nécessaire sur la base de l'exemple de code provenant de https://developers.google.com/maps/documentation/Android/map .

private void setUpMapIfNeeded() {
    // Do a null check to confirm that we have not already instantiated the
    // map.
    if (mMap == null) {
        FragmentManager mgr = getFragmentManager();
        MapFragment mapFragment = (MapFragment)mgr.findFragmentById(R.id.map);
        mMap = mapFragment.getMap();
        // Check if we were successful in obtaining the map.
        if (mMap != null) {
            // The Map is verified. It is now safe to manipulate the map.
            setUpMap();
        }else{
            // check if google play service in the device is not available or out-dated.
            GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);

            // nothing anymore, cuz android will take care of the rest (to remind user to update google play service).
        }
    }
}

En outre, vous devez ajouter un attribut à votre manifest.xml comme :

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="your.package.name"
android:versionCode="3225130"
android:versionName="your.version" >

Et la valeur "3225130" provient de la bibliothèque google-play-services_lib que votre projet utilise. De plus, cette valeur se trouve au même endroit que manifest.xml dans google-play-services_lib.

1voto

dryii Points 43

Si vous recherchez Google Play Services dans le gestionnaire d'applications, vous verrez la version installée.

1voto

Michalsx Points 298

Version de Kotlin mise à jour (2019.07.03) :

class GooglePlayServicesUtil {

    companion object {

        private const val GOOGLE_PLAY_SERVICES_AVAILABLE_REQUEST = 9000

        fun isGooglePlayServicesWithError(activity: Activity, showDialog: Boolean): Boolean {
            val status = GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(activity)
            return if (status != ConnectionResult.SUCCESS) {
                if (showDialog) {
                    GoogleApiAvailability.getInstance().getErrorDialog(activity, status, GOOGLE_PLAY_SERVICES_AVAILABLE_REQUEST).show()
                }
                true
            } else {
                false
            }
        }

    }

}

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