2014-12-08 1 views
5

Я пытаюсь добавить достижения в свою игру, используя сервисы игровой игры Google. Активность в моей игре, которая отвечает за предоставление достижений, уже расширяет BaseGameActivity и вызывает beginUserInitiatedSignIn, когда она должна дать достижение, поэтому пользователь должен войти в систему, но в то время, когда я разблокирую достижение для пользователя, я сохраняю получение "java.lang.IllegalStateException: GoogleApiClient еще не подключен". Может ли кто-нибудь сказать мне, что я делаю неправильно? Вот код, ответственный за разблокировку достижения (это в классе, который простирается BaseGameActivity, от BaseGameUtils):java.lang.IllegalStateException: GoogleApiClient еще не подключен

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

Престола [это сообщение] (http://stackoverflow.com/questions/24474986/android-google-play-games-services-connection-error-java- Ланг-illegalstateexc). – frenchDolphin

+0

Да, я видел это сообщение, но я не хочу кнопку входа, я хочу, чтобы мое приложение попыталось сразу же войти в систему. Это невозможно? –

+0

Да, к сожалению, вам нужно попросить разрешения пользователя перед тем, как войти в систему, потому что подписание означает, что ваше приложение получает всевозможные новые разрешения. Вот почему Android заставляет вас сначала показывать диалог. – frenchDolphin

ответ

2

Посмотрите на основной выборке https://github.com/playgameservices/android-basic-samples/tree/master/BasicSamples/TypeANumber. Поток соединений для API Google является асинхронным, поэтому вы не можете разблокировать достижение, как оно есть. Существует обратный вызов onConnected(), который вызывается после установления соединения. В этом методе вы можете разблокировать достижения.

документация для клиента АФИ в http://developer.android.com/google/auth/api-client.html

 Смежные вопросы

  • Нет связанных вопросов^_^