注销后,Android API IsConnected返回TRUE

注销后,Android API IsConnected返回TRUE,第1张

概述我正在使用Xamarin开发使用Google Play游戏服务的 Android游戏.我正在使用Genymotion Android Emulator进行测试.我遇到了一个似乎是Google Play或Xamarin实施中的错误的问题. 如果我退出Google帐户,则对IGoogleApiClient.IsConnected()的调用将继续返回true(即使我已经明确注销).如果我然后尝试使用该A 我正在使用Xamarin开发使用Google Play游戏服务的 Android游戏.我正在使用Genymotion AndroID Emulator进行测试.我遇到了一个似乎是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,true);    StartActivityForResult(intent,RC_SELECT_PLAYERS);}

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

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

注意:只有通过Google的用户界面退出时才会出现这种情况.如果我用mGoogleapiclient.disconnect()之类的方式手动签出用户,则不会出现问题; mGoogleapiclient.IsConnected()现在返回false(按预期方式).

解决方法 为了保持登录状态同步,你必须正确实现onActivityResult.

这应该看起来如下:

注意:这是java代码,我不确定这将如何使用Xamarin,但希望你应该能够弄明白:)

@OverrIDeprotected 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全部内容,希望文章能够帮你解决注销后,Android API IsConnected返回TRUE所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1137586.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-30
下一篇2022-05-30

发表评论

登录后才能评论

评论列表(0条)

    保存