gpt4 book ai didi

注销后 Android API IsConnected 返回 TRUE

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:12:38 28 4
gpt4 key购买 nike

我正在使用 Google Play 游戏服务和 Xamarin 为 Android 开发游戏。我正在使用 Genymotion Android 模拟器进行测试。我遇到了一个似乎是 Google Play 或 Xamarin 实现中的错误的问题。

如果我退出 Google 帐户,对 IGoogleApiClient.IsConnected() 的调用将继续返回 true(即使我已经显然刚刚退出)。如果我随后尝试使用该 API 对象,我将得到如下异常:

java.lang.SecurityException: Not signed in when calling API

例如,如果在注销后执行以下代码,则会导致上述异常:

public void StartNewMatch()
{
if (!mGoogleApiClient.IsConnected)
{
return;
}

Intent intent = GamesClass.TurnBasedMultiplayer.GetSelectOpponentsIntent(mGoogleApiClient, 1, 1, true);
StartActivityForResult(intent, RC_SELECT_PLAYERS);
}

我正在 Google Play 游戏收件箱(匹配选择器)中注销;如下图所示。

有人遇到过这个吗?我错过了什么吗?有任何解决方法吗?

注意:只有通过 Google 的用户界面注销时才会出现这种情况。如果我使用 mGoogleApiClient.Disconnect() 之类的方法手动注销用户,则不会出现此问题发生; mGoogleApiClient.IsConnected() 现在返回 false(如预期)。

enter image description here

enter image description here

enter image description here

最佳答案

为了保持登录状态同步,您必须正确实现 onActivityResult。

这应该看起来像下面这样:

注意:这是 Java 代码,我不确定使用 Xamarin 时它的外观如何,但希望您应该能够弄明白:)

@Override
protected void onActivityResult(int requestCode, int responseCode, Intent data) {

// check for "inconsistent state"
if ( responseCode == GamesActivityResultCodes.RESULT_RECONNECT_REQUIRED && requestCode == <your_request_code_here> ) {

// force a disconnect to sync up state, ensuring that mClient reports "not connected"
mGoogleApiClient.disconnect();
}
}

注意:只需确保将代码替换为您使用的请求代码。您可能还需要检查多个请求代码。

关于注销后 Android API IsConnected 返回 TRUE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26902935/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com