Google Api Client quelque part NULL sur OnConnected

GoogleApiClient ci-dessous:

  mGoogleApiClient = new GoogleApiClient.Builder(this) .enableAutoManage(this, 0 /* clientId */, this) .addApi(LocationServices.API) .addApi(Places.GEO_DATA_API) .addConnectionCallbacks(this) .build(); 

Mais dans la méthode onConnected , je vérifie mGoogleApiClient => value null. Dans ce cas, j'essaie de reconstruire googleApiClient mais j'ai une erreur:

  java.lang.IllegalStateException: Already managing a GoogleApiClient with id 0 

Aidez-moi à comprendre pourquoi mGoogleApiClient est parfois NULL, même s'il est connecté: |. (Notes. J'ai vérifié tout le code source, je n'ai jamais défini GoogleApiClient sur NULL).

Merci!

Mettre à jour

Mon problème est maintenant résolu après avoir essayé d'utiliser la dernière version du service de jeu.

Merci à tous pour l'aide.

  • Obtenez les détails de la personne dans la nouvelle session de Google Play Play Services 8.3
  • L'erreur GoogleApiClient s'effondre
  • Android Geofencing avec Google Play Services 6.5.87
  • Envoyer des mises à jour de localisation à IntentService
  • Google en mode silence Enregistrez-vous dans le service de fond Android
  • AbstractGoogleClient: signal fatal 11 (SIGSEGV)
  • Le rappel de client google api n'est jamais appelé
  • Getting 'E / TokenRequestor: Vous avez une configuration OAuth2 incorrecte. Erreur détaillée: INVALID_AUDIENCE 'même après avoir fourni des identifiants de clients précis
  • 7 Solutions collect form web for “Google Api Client quelque part NULL sur OnConnected”

    J'ai eu le même problème. Tout ce que j'ai fait pour le résoudre est de supprimer .enableAutoManage(this, 0 /* clientId */, this) car il ne fonctionne pas correctement de ce que j'ai supposé. Ensuite, annulez ces méthodes dans votre activité:

     @Override public void onStart() { super.onStart(); if (mGoogleApiClient != null) { mGoogleApiClient.connect(); } } @Override public void onStop() { if (mGoogleApiClient != null && mGoogleApiClient.isConnected()) { mGoogleApiClient.disconnect(); } super.onStop(); } 

    Techniquement, c'est ce que .enableAutoManage(this, 0 /* clientId */, this) était supposé faire, sauf que maintenant, tout fonctionne comme il se doit.

    La documentation indique: à tout moment donné, un seul client autogéré est autorisé par ID. Pour réutiliser un identifiant, vous devez d'abord appeler stopAutoManage(FragmentActivity) sur le client précédent.

    Ce que je fais personnellement, c'est faire un appel à la méthode ci-dessous avant de quitter l'activité, dans laquelle j'utilise Google Api Client.

     private void stopAutoManage() { if (mGoogleApiClient != null) mGoogleApiClient.stopAutoManage(mActivity); } 

    Je pense que vous feriez mieux de regarder cette référence.

    Page de référence de "public GoogleApiClient.Builder enableAutoManage"

    Dans cette page, cela montre que, via IllegalStateException, si clientId est déjà géré automatiquement. Alors, vérifiez votre code avec

      .enableAutoManage(this, 0 /* clientId */, this) 

    Je pense que si une exception sur votre code, il pourrait renvoyer zéro comme n'ayant pas été complété.

    Si vous êtes confronté à ce problème lorsque vous essayez de réinitialiser mGoogleApiClient, supprimez simplement

    .enableAutoManage(this, 0 /* clientId */, this)

    Utilisation

     mGoogleApiClient = new GoogleApiClient.Builder(this) .addApi(LocationServices.API) .addApi(Places.GEO_DATA_API) .addConnectionCallbacks(this) .build(); 

    Et ça va bien

    J'ai eu le même problème (Déjà gérant un GoogleApiClient avec id 0) dans un fragment, et enfin je l'ai résolu:

    • Annuler onStart () et onStop normalement
    • Ajouter inStop () cet appel: "yourApiGoogle" .stopAutoManage (context);

    Bonne journée…

    onConnected build() appelle onConnected immédiatement si vous êtes déjà connecté. Par conséquent, votre variable pourrait être nulle.

    Meilleure utilisation

     mGoogleApiClient = new GoogleApiClient.Builder(this) .enableAutoManage(this, 0 /* clientId */, this) .addApi(LocationServices.API) .addApi(Places.GEO_DATA_API) .addConnectionCallbacks(this); mGoogleApiClient.build(); 
     mGoogleApiClient = new GoogleApiClient.Builder(getActivity()) .addConnectionCallbacks(this) .addOnConnectionFailedListener(this) .addApi(LocationServices.API) .build(); 

    C'est ainsi que je l'ai fait.

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.