从谷歌播放游戏服务排行榜屏幕注销

iap*_*ker 4 android google-play-services google-play-games google-signin

当排行榜显示在屏幕上时,有一个名为"设置"的选项.在里面有一个选项"Signout".当我点击退出时,排行榜已关闭,

问题.

如果我检查了登录状态,则以下函数始终返回true.表示mGoogleApiClient已连接.因此,当我尝试单击显示排行榜的图标时,它始终具有responseCode RESULT_RECONNECT_REQUIRED.

如果我重启我的应用程序,这个问题就消失了

public boolean isSignedIn() {
    return mGoogleApiClient != null && mGoogleApiClient.isConnected();
}
Run Code Online (Sandbox Code Playgroud)

题.

程序如何知道用户已在排行榜屏幕中注销.

Tho*_*sDC 7

由于连接处于不一致状态(),您必须抓住注销onActivityResult并自行调用.GoogleApiClient.disconnect()

因此,当您使用以下代码打开排行榜时:

activity.startActivityForResult(Games.Leaderboards.getLeaderboardIntent(googleApiClient, leaderboardId), MY_CUSTOM_LEADERBOARD_RESULT_CODE);
Run Code Online (Sandbox Code Playgroud)

您应该按如下方式处理注销事件:

public void onActivityResult(int requestCode, int responseCode, Intent intent) {
    boolean userLoggedOut = (responseCode == GamesActivityResultCodes.RESULT_RECONNECT_REQUIRED) && (requestCode == MY_CUSTOM_LEADERBOARD_RESULT_CODE);
    if (userLoggedOut) {
        googleApiClient.disconnect();
    }
}
Run Code Online (Sandbox Code Playgroud)