BaseGameUtils未知错误,onConnectionFailed:结果4

我已经测试了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,它与Developer Console中的一个匹配。
  • 我已经覆盖了请求的方法,包含在ActivityResult()中
  • 清单也没问题,它包括请求的元数据。

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

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

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

编辑:

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

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

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

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

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

错误很明显:

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

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

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

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

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

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

问题:

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

解决方法:

 @Override public void onConnectionFailed(ConnectionResult arg0) {  try { arg0.startResolutionForResult(this, 9001); } catch (SendIntentException e) { // TODO Auto-generated catch block e.printStackTrace(); } } 

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

了解更多信息请点击这里