Android BaseGameUtils未知错误,onConnectionFailed:结果4

Android BaseGameUtils未知错误,onConnectionFailed:结果4,android,google-play-services,Android,Google Play Services,我已经测试了ButtonClicker 2000示例,效果非常好。现在我正在尝试将Google Games服务应用到另一个游戏中,但它给出了一些错误: 06-06 12:30:46.353: D/BaseGameActivity(7982): isGooglePlayServicesAvailable returned 0 06-06 12:30:46.353: D/BaseGameActivity(7982): beginUserInitiatedSignIn: starting new si

我已经测试了ButtonClicker 2000示例,效果非常好。现在我正在尝试将Google Games服务应用到另一个游戏中,但它给出了一些错误:

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 in values文件夹,它与开发人员控制台中的文件夹相匹配
  • 我已经重写了请求的方法,包括onActivityResult()
  • 清单也正常,它包括请求的元数据

  • 这是我在onCreate中登录时使用的代码:

    setSignInMessages("SIGNING IN", "SIGNING OUT");
    beginUserInitiatedSignIn();
    
在测试示例按钮Clicker 2000时,我也遇到了未知错误,并修复了它,正确配置了仪表板。当前的游戏仪表盘也配置正确,所以我真的不知道发生了什么。 我错过了什么

编辑:

  • 我还尝试了解包BaseGameActivity和实现GameHelper 直接在我的主要活动中
  • 我尝试发布应用程序游戏设置(因为此游戏已在Play Store上发布)。已将另一个应用程序与我的发布签名SHA1密钥链接。设置为安装的主应用程序。还是不走运

    • 错误很明显:

      E/SignInActivity(): SignInActivity must be started with startActivityForResult
      
      这意味着开始显著性时使用的是
      startActivity
      ,而不是
      startActivityForResult


      搜索此活动的启动位置并更改为startActivityForResult。如果你张贴一些代码,我将能够帮助更多

      这真奇怪。根据BaseGameActivity日志,您得到的错误不应该发生

      符号活动在代码中确实不可见,因为您通过调用
      GameHelper.resolveConnectionResult
      启动它,它将调用
      mConnectionResult.startResolutionForResult(mActivity,RC\u RESOLVE)
      。这是
      mConnectionResult
      ,其目的是启动
      signalivity
      。BaseGameActivity的日志显示您正在正确启动它,因此除非您在BaseGameActivity和GameHelper中做了一些更改,否则错误是奇怪的

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


      还有一件事:登录对话框是否仍在显示?什么时候显示显著性错误(时间戳)?

      根据您的错误,您将连接gamehelper两次(可能是在oncreate中),并且它返回错误状态4。你不给代码,但我相信我知道你的问题是什么。你可能把谷歌登录和GamesClient.connect搞砸了 在连接gamesclient之前,请等待google帐户登录。是的

      public void onSignInSucceeded() {    
                  mGamesClient.connect();}
      
      您可以在onCreate中创建GamesClient对象,但我给您的这个方法更适合连接。我花了几个小时解决这个问题,我希望我能帮助解决这个问题:

      ConnectionResult{statusCode=需要在中签名, resolution=PendingEvent{#: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();
          }
      
      }
      
      @覆盖
      连接失败的公共void(连接结果arg0){
      试一试{
      arg0.StartResult解决方案(本,9001);
      }捕获(发送){
      //TODO自动生成的捕捉块
      e、 printStackTrace();
      }
      }
      
      这只是一个粗略的演示,按照google的建议处理ConnectionResult


      更多信息

      我只有一项不重要的活动。实际上,即使在GameBaseUtils项目中,重要性也不可见。GameHelper和BaseGameActivity当然是未触及的。我没有按包名筛选日志(显示所有消息)。无论如何,不会显示截击或GameAgent消息。如果这有帮助的话,我正在尝试在一个Shiva3D导出的项目(仍然是一个Android eclipse项目)中实现它。首先显示“登录”进度对话框,然后是“未知错误”对话框。