最近,我在我的应用程序中添加了对Google Play游戏服务的支持(添加了BaseGameActivity和GameHelper),它的登录和注销工作流程运行得很好。在我的图形线程中,我向主活动处理程序发送消息,它调用beginUserInitiatedSignIn或signOut。当识别过程完成时,游戏助手调用我的activity的onSignInFailed或onSignInSucceeded,我可以检查isSignedIn (如果调用了onSignInSucceeded,则为true)。
但今天我发现它现在的行为很奇怪。遗憾的是,我没有备份上一个工作版本,但essense代码是相同的。
如果我要求应用程序登录,它会显示google服务登录对话框(我的设备上有2个帐户)。我选择一个账号,按下ok,它会返回到我的应用程序,但onSignInSucceeded和onSignInFailed都不会被调用(之前如果我取消了这个对话框,我会看到“未知错误”消息)。当我第二次尝试登录时,它会启动一个旋转的圆圈,并无休止地等待。如果我点击屏幕,它将中止等待并返回到我的视图。
尽管如果我关闭应用程序并再次启动它,它会在启动时成功登录,调用onSignSucceded并在我签入运行时保持连接。上面写着:
onCreate: creating GamesClient
onStart.
onStart: connecting clients.
Connecting GamesClient.
onConnected: connected! client=1
All clients now connected. Sign-in successful.
All requested clients connected. Sign-in succeeded!如果我注销,然后再次尝试登录,它会显示accounts对话框,并写道:
isGooglePlayServicesAvailable returned 0
beginUserInitiatedSignIn: starting new sign-in flow.
Connecting GamesClient.
onConnectionFailed: result 4
onConnectionFailed: since user initiated sign-in, trying to resolve problem.
resolveConnectionResult: trying to resolve result: ConnectionResult{statusCode=SIGN_IN_REQUIRED, resolution=PendingIntent{41f8a610: android.os.BinderProxy@41f8a5b0}}
result has resolution. Starting it.当我选择一个帐户时,它会返回到我的活动,并且不会调用onSignInSucceeded和onSignInFailed。如果我在运行时签入,我看到应用程序没有连接到google服务。当我再次尝试登录时,它显示永远旋转的圆圈,并说:
isGooglePlayServicesAvailable returned 0
beginUserInitiatedSignIn: continuing pending sign-in flow.
resolveConnectionResult: trying to resolve result: ConnectionResult{statusCode=SIGN_IN_REQUIRED, resolution=PendingIntent{41f8a610: android.os.BinderProxy@41f8a5b0}}
result has resolution. Starting it. 当我轻敲屏幕时,circle被中止,没有调用onSignInSucceeded或onSignInFailed等。
我无法想象哪里出了问题。处理程序在主线程上创建。我有一个谷歌的例子,它登录和注销没有任何问题,就像我的应用程序一样。谁能说出哪里可能是错的?谢谢!
发布于 2013-06-01 00:14:34
花了两天时间才找到一个愚蠢的错误。当您扩展BaseGameActivity时,请确保在activity方法中调用它的所有方法(如果您覆盖它们),例如:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
....
<our code here>
}BaseGameActivity调用它的聚合mHelper的方法,这些方法完成了所有的魔术。
https://stackoverflow.com/questions/16802775
复制相似问题