2014-12-08 9 views
5

Ich versuche, meinem Spiel Erfolge hinzuzufügen, indem ich Google Play Game Services verwende. Die Aktivität in meinem Spiel, die für die Leistung verantwortlich ist, erweitert BaseGameActivity und ruft das beginUserInitiatedSignIn auf, wenn es den Erfolg geben muss, also muss der Benutzer sich anmelden, aber zu dem Zeitpunkt, zu dem ich den Erfolg für den Benutzer entsperren werde, behalte ich "java.lang.IllegalStateException: GoogleApiClient ist noch nicht verbunden". Kann mir jemand sagen, was ich falsch mache? Hier ist der Code für die Erschließung des Erfolgs (es ist in der Klasse, die Basegameactivity erstreckt, von BaseGameUtils):java.lang.IllegalStateException: GoogleApiClient ist noch nicht verbunden.

private void darConquistaDerrubouArvore(int numeroDeAcertos) { 
    // start the asynchronous sign in flow 
    mSignInClicked = true; 
    mGoogleApiClient.connect(); 
    if(numeroDeAcertos <= 40) 
    { 
     try 
     { 
       beginUserInitiatedSignIn(); 
       Games.Achievements.unlock(gameHelper.getApiClient(), "CgkIs_27xcoSEAIQAQ"); 
       Log.i("TelaModoCasual", "usuário não está logado"); 
       this.onSignInFailed(); 

     } 
     catch(Exception exc) 
     { 
      exc.printStackTrace(); 
      this.onSignInFailed(); 
     } 
    } 

} 
+0

See [Dieser Beitrag] (http://stackoverflow.com/questions/24474986/android-google-play-games-services-connection-error-java- lang-illegalstateexc). – frenchDolphin

+0

Ja, ich habe diesen Beitrag gesehen, aber ich möchte keinen Anmelde-Button, ich möchte, dass meine Anwendung versucht, den Nutzer sofort anzumelden. Es ist unmöglich? –

+0

Ja, leider müssen Sie vor der Anmeldung nach der Berechtigung eines Benutzers fragen, denn das Anmelden bedeutet, dass Ihre App alle möglichen neuen Berechtigungen erhält. Aus diesem Grund zwingt Android Sie, zuerst einen Dialog anzuzeigen. – frenchDolphin

Antwort

2

Werfen Sie einen Blick auf die Grundprobe https://github.com/playgameservices/android-basic-samples/tree/master/BasicSamples/TypeANumber. Der Verbindungsfluss für die Google-APIs ist asynchron, sodass Sie den Erfolg nicht so freischalten können, wie Sie ihn haben. Es gibt einen Callback onConnected(), der aufgerufen wird, sobald die Verbindung hergestellt ist. In dieser Methode können Sie die Erfolge freischalten.

Die Dokumentation für den api-Client ist bei http://developer.android.com/google/auth/api-client.html

Verwandte Themen