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?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.
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.
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
}
}
}
}