BaseGameUtils未知错误,onConnectionFailed:结果4

时间:2013-06-06 10:50:47

标签: android google-play-services

我已经测试了ButtonClicker 2000示例,它运行良好。现在我正在尝试将Google游戏服务实施到另一个游戏中,但它会出现一些错误:

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并实现了请求的接口。
  • 我在values文件夹中有一个与开发者控制台中的ids.xml相匹配的ids.xml。
  • 我已经覆盖了所请求的方法,包括onActivityResult()
  • 清单也没问题,它包含了请求的元数据。

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

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

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

编辑:

  • 我还尝试展开BaseGameActivity并实现GameHelper 直接在我的主要活动中。
  • 我尝试发布应用游戏设置(因为此游戏已在Play商店发布)。使用我的发布签名SHA1密钥链接另一个应用。设置为安装的主要应用程序。仍然没有运气。

4 个答案:

答案 0 :(得分:1)

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

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

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

还有一件事:SignIn对话框显示了吗?何时显示SignInActivity错误(时间戳)?

答案 1 :(得分:0)

错误非常明确:

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

这意味着SignInActivity正在使用startActivity而不是startActivityForResult启动。

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

答案 2 :(得分:0)

根据你的错误你连接gamehelper两次(也许在你的oncreate?)并返回错误状态4.你不给代码,但我相信我知道你的问题是什么。你可能正在使用GamesClient.connect弄乱谷歌登录 在连接gamesclient之前,请等待Google帐户登录。我做了

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

你可以在你的onCreate中创建GamesClient对象,但是连接更适合我给你的这个方法。我花了好几个小时解决这个问题,希望我能帮忙

答案 3 :(得分: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。

了解更多信息Click Here