I integrated google games services in my game, including Leaderboards and achievements. If the user opens the leaderboard or achievement activity, he has the possibility to
I think what you need is: isSignedIn(); Like this:
public boolean getSignedIn() {
return isSignedIn();
}
This is will return a true or false if user is signed or not. The method in GameHelper.java:
/** Returns whether or not the user is signed in. */
public boolean isSignedIn() {
return mState == STATE_CONNECTED;
}
Hope it helps.
Try handling 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;
}
RC_YOUR_UNIQUE_ID is id you've used for showing Leaderboard or Achievements activity.
In my case I am doing as following. On MainActivity
ovveride onActivityResult()
. RC_UNUSED
is the requestCode
when you call to open Leaderboards
, Achievements
and Settings
activity from Google Play service app.
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);
if (requestCode == RC_UNUSED
&& resultCode == GamesActivityResultCodes.RESULT_RECONNECT_REQUIRED) {
signOut();
}
Log.i("test", "On Activity result called");
}
Write your signOut()
method as following
public void signOut() {
try {
Games.signOut(mGoogleApiClient);
}catch (SecurityException se){
Log.i("test", "mGoogleApiClient status was disconnected when callin signOut status. message = " + se.getMessage());
}
if (mGoogleApiClient.isConnected()) {
mGoogleApiClient.disconnect();
}
// update your UI logic here (show login btn, hide logout btn).
}
Don't forget to update your UI on the end of signOut()