我已经测试了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
我做了什么:
清单也没问题,它包含了请求的元数据。
这是我用于登录onCreate的代码:
setSignInMessages("SIGNING IN", "SIGNING OUT");
beginUserInitiatedSignIn();
在测试示例Button Clicker 2000时,我也遇到了未知错误并修复了正确配置仪表板的问题。当前的游戏仪表板也配置正确,所以我真的不知道发生了什么。 我错过了什么?
编辑:
答案 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