【问题标题】:java.lang.IllegalStateException: GoogleApiClient is not connected yetjava.lang.IllegalStateException:GoogleApiClient 尚未连接
【发布时间】:2015-02-06 16:32:46
【问题描述】:

我正在尝试使用 google play 游戏服务将成就添加到我的游戏中。我的游戏中负责提供成就的活动已经扩展了 BaseGameActivity 并在必须提供成就时调用 beginUserInitiatedSignIn ,因此用户必须登录,但在我为用户解锁成就时,我保持得到“java.lang.IllegalStateException:GoogleApiClient 尚未连接”。谁能告诉我我做错了什么?下面是负责解锁成就的代码(它在扩展 BaseGameActivity 的类中,来自 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();
        }
    }

}

【问题讨论】:

  • this post
  • 是的,我看到了这篇文章,但我不想要登录按钮,我希望我的应用程序立即尝试登录用户。不可能吗?
  • 是的,很遗憾,您需要在登录之前征得用户的许可,因为登录意味着您的应用会获得各种新权限。这就是 Android 强制您首先显示对话框的原因。
  • 据我所知,没有办法,但是如果有其他人发现了,他们应该清楚地在这里发布。

标签: java android google-play achievements


【解决方案1】:

查看基本示例https://github.com/playgameservices/android-basic-samples/tree/master/BasicSamples/TypeANumber。 Google API 的连接流程是异步的,因此您无法解锁已有的成就。一旦建立连接,就会调用一个回调 onConnected()。通过这种方法,您可以解锁成就。

api 客户端的文档位于http://developer.android.com/google/auth/api-client.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-30
    • 1970-01-01
    • 1970-01-01
    • 2017-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多