如何检查用户是否从游戏服务默认视图中退出?

tra*_*rix 3 android securityexception google-plus google-play-games

我在游戏中整合了谷歌游戏服务,包括排行榜和成就.如果用户打开排行榜或成就活动,他可以从右上角的设置中退出.

如何检查用户是否确实已登录?getGamesClient.isConnected()仍然是,但用户从谷歌视图退出.

如果我点击退出按钮(仍然存在,因为gamesClient仍然连接)我得到一个SecurityException:

08-16 11:01:21.262 14288-14288 /?E/AndroidRuntime:FATAL EXCEPTION:位于com.google.android的android.os.Parcel.readException(Parcel.java:1379)的android.os.Parcel.readException(Parcel.java:1425)中的主要java.lang.SecurityException.来自com.google.android.gms.games.GamesClient.signOut(未知来源)的com.google.android.gms.internal.bj.signOut(未知来源)的gms.internal.bm $ a $ aa(未知来源)

目前,我正在检查ActivityForResult响应代码并断开GamesClient,如果它处于不一致状态,但我不喜欢这种方法.

小智 19

尝试处理onActivityResult:

public boolean onActivityResult(int requestCode, int resultCode, Intent data)
{
    if (requestCode == RC_YOUR_UNIQUE_ID 
            && resultCode == GamesActivityResultCodes.RESULT_RECONNECT_REQUIRED) {
        mHelper.disconnect();
        // update your logic here (show login btn, hide logout btn).            
    } else {
        mHelper.onActivityResult(requestCode, resultCode, data);
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)

RC_YOUR_UNIQUE_ID是您用于显示排行榜或成就活动的ID.