Android BaseGameUtils未知错误,onConnectionFailed:结果4
我已经测试了ButtonClicker 2000示例,效果非常好。现在我正在尝试将Google Games服务应用到另一个游戏中,但它给出了一些错误: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
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();
- 我还尝试了解包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项目)中实现它。首先显示“登录”进度对话框,然后是“未知错误”对话框。