Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

java.lang.IllegalStateException: GoogleApiClient is not connected yet

I'm trying to add achievements to my game by using google play game services. The activity in my game that is responsible for giving the achievement already extends BaseGameActivity and it calls the beginUserInitiatedSignIn when it has to give the achievement, so the user must be signing in, but at the time I unlock the achievement for the user, I keep getting "java.lang.IllegalStateException: GoogleApiClient is not connected yet". Can anyone tell me what I am doing wrong? Here's the code responsible for unlocking the achievement(it's in the class that extends BaseGameActivity, from BaseGameUtils):

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();
        }
    }

}
like image 269
Fabio Phillip Rocha Marques Avatar asked Nov 01 '22 13:11

Fabio Phillip Rocha Marques


1 Answers

Take a look at the basic sample https://github.com/playgameservices/android-basic-samples/tree/master/BasicSamples/TypeANumber. The connection flow for the Google APIs is asynchronous, so you can't unlock the achievement as you have it. There is a callback onConnected() which is called once the connection is established. In that method you can unlock the achievements.

The documentation for the api client is at http://developer.android.com/google/auth/api-client.html

like image 189
Clayton Wilkinson Avatar answered Nov 12 '22 15:11

Clayton Wilkinson