我将Google游戏服务用于排行榜。显示如下:
static public void showLeaderboard(String lid)
{
if (isLogined() == 1)
{
Log.i(TAG, "Showing leaderboard...");
Intent intent = Games.Leaderboards.getLeaderboardIntent(mClient, lid);
mApp.startActivityForResult(intent, 1);
}
}
static public int isLogined()
{
if (mClient != null && mClient.isConnected())
return 1;
return 0;
}
但是当我打开排行榜并使用Google UI从Google游戏服务退出时(操作溢出菜单图标 - >设置 - >退出)我继续使用我的isLogined()== 1.因此,当我调用showLeaderboard时( )第二次 - 游戏有例外:
java.lang.SecurityException: Not signed in when calling API
GoogleApiClient具有连接回调,但没有断开连接。 如何使用谷歌UI处理GGS唱歌?
答案 0 :(得分:8)
为了让所有事情保持同步,你必须正确实施onActivityResult
。
这应该看起来如下:
@Override
protected void onActivityResult(int request, int response, 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"
mClient.disconnect();
}
}
注意:只需确保将代码中的<your_request_code_here>
替换为您使用的请求代码(在您的示例中仅为1
)。如果您也使用成就,则可能需要检查多个请求代码。
答案 1 :(得分:0)
通过添加UPDATE MEMBERS
SET ADULT='N'
WHERE MEMBERID IN (SELECT MEMBERID
FROM MEMBERS
WHERE AGE<16)
和try
,只需catch
showLeaderbord
.disconnect
方法也可以正常工作,然后再次在{{1}中重试身体