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 ?
Réponses
Trop de publicités?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 ));
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.
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é.
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();
}
}
- Réponses précédentes
- Plus de réponses