10

我已经测试过 ButtonClicker 2000 示例并且效果很好。现在我正在尝试将 Google Games Services 实施到另一个游戏中,但它给出了一些错误:

06-06 12:30:46.353: D/BaseGameActivity(7982): isGooglePlayServicesAvailable returned 0
06-06 12:30:46.353: D/BaseGameActivity(7982): beginUserInitiatedSignIn: starting new sign-in flow.
06-06 12:30:46.416: D/BaseGameActivity(7982): Connecting GamesClient.
06-06 12:30:46.424: D/BaseGameActivity(7982): onStart.
06-06 12:30:46.424: D/BaseGameActivity(7982): onStart: connecting clients.
06-06 12:30:46.424: D/BaseGameActivity(7982): Connecting GamesClient.
06-06 12:30:46.424: E/GmsClient(7982): Calling connect() while still connected, missing disconnect().
06-06 12:30:46.713: D/BaseGameActivity(7982): onConnectionFailed: result 4
06-06 12:30:46.713: D/BaseGameActivity(7982): onConnectionFailed: since user initiated sign-in, trying to resolve problem.
06-06 12:30:46.713: D/BaseGameActivity(7982): resolveConnectionResult: trying to resolve result: ConnectionResult{statusCode=SIGN_IN_REQUIRED, resolution=PendingIntent{41692200: android.os.BinderProxy@416921a0}}
06-06 12:30:46.713: D/BaseGameActivity(7982): result has resolution. Starting it.

06-06 12:30:46.900: D/BaseGameActivity(7982): onActivityResult, req 9001 response 0
06-06 12:30:46.900: D/BaseGameActivity(7982): responseCode != RESULT_OK, so not reconnecting.
06-06 12:30:46.900: D/BaseGameActivity(7982): giveUp: giving up on connection. Status code: 4
06-06 12:30:46.900: D/BaseGameActivity(7982): Making error dialog for error: 4

com.google.android.gms 记录以下错误:

E/SignInActivity(7432): SignInActivity must be started with startActivityForResult

我做了什么:

  • 我已经正确配置了开发者控制台端。SHA1 是正确的(匹配 androiddebug 密钥库)。
  • 在 API 控制台中,一切看起来都很好。
  • 我扩展了 GameBaseActivity 并实现了请求的接口。
  • 我在值文件夹中有一个 ids.xml,它与开发人员控制台中的那个相匹配。
  • 我已经覆盖了请求的方法,包括 onActivityResult()
  • 清单也可以,它包含请求的元数据。

  • 这是我用来登录 onCreate 的代码:

    setSignInMessages("SIGNING IN", "SIGNING OUT");
    beginUserInitiatedSignIn();
    

在测试示例 Button Clicker 2000 时,我也遇到了未知错误,并修复了它正确配置仪表板的问题。当前的游戏仪表板也配置正确,所以我真的不知道发生了什么。我错过了什么?

编辑:

  • 我还尝试解开 BaseGameActivity 并直接在我的主 Activity 中实现 GameHelper。
  • 我尝试发布应用游戏设置(因为该游戏已在 Play Store 上发布)。将另一个应用程序与我的发布签名 SHA1 密钥相关联。设置为主应用程序进行安装。仍然没有运气。
4

4 回答 4

1

这真的很奇怪。您遇到的错误不应发生,具体取决于您的 BaseGameActivity 日志。

SignInActivity 在代码中确实不可见,因为您通过调用GameHelper.resolveConnectionResultwhich will call 来启动它mConnectionResult.startResolutionForResult(mActivity, RC_RESOLVE)。那mConnectionResult就是具有将要启动的 Intent SignInActivity。而且 BaseGameActivity 的日志说你正在正确启动它,所以除非你在 BaseGameActivity 和 GameHelper 中做了一些更改,否则错误很奇怪。

你在哪里寻找错误?在您的包装过滤器中?真正有用的信息显示在 LogCat 中,但不在您的应用程序过滤器中。在 LogCat 中查找所有没有过滤器的消息,然后搜索标签 Volley 和 GameAgent。它可能会显示一些错误。

还有一件事:仍然显示登录对话框吗?何时显示 SignInActivity 错误(时间戳)?

于 2013-06-11T14:52:29.967 回答
0

错误很明显:

E/SignInActivity(): SignInActivity must be started with startActivityForResult

这意味着 SignInActivity 正在启动startActivity而不是startActivityForResult.

搜索此活动的启动位置并更改为 startActivityForResult。如果您发布了一些代码,我将能够提供更多帮助!

于 2013-06-06T12:17:54.283 回答
0

根据您的错误,您连接了 gamehelper 两次(可能在您的 oncreate 中?)它返回错误状态 4。您没有提供代码,但我确信我知道您的问题是什么。您可能正在使用 GamesClient.connect 弄乱 google 登录。在连接游戏客户端之前等待 google 帐户登录。我做了

public void onSignInSucceeded() {    
            mGamesClient.connect();}

您可以在 onCreate 中创建 GamesClient 对象,但连接最好放在我给您的这个方法中。我花了几个小时解决这个问题,我希望我能提供帮助

于 2013-07-11T08:31:58.890 回答
0

问题:

ConnectionResult{statusCode=SIGN_IN_REQUIRED, resolution=PendingIntent{#: android.os.BinderProxy@#}}

通过以下方式解决:

@Override
public void onConnectionFailed(ConnectionResult arg0) {
    <Your Code...>

    try {
        arg0.startResolutionForResult(this, 9001);
    } catch (SendIntentException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}

这只是一个粗略的演示,按照谷歌的建议处理 ConnectionResult。

更多信息请点击这里

于 2013-07-19T18:41:51.993 回答