De vous déconnecter de Google Plus intégré dans l'Application android

J'ai suivi les didacticiels suivants pour intégrer Google+ dans l'application android.
https://developers.google.com/+/mobile/android/connexion#add_the_google_sign-in_button_to_your_app
http://www.riskcompletefailure.com/2013/03/common-problems-with-google-sign-in-on.html
http://www.androidhive.info/2014/02/android-login-with-google-plus-account-1/

Je suis en mesure de vous connecter à votre compte Google et suis en mesure de récupérer les informations. C'est que je ne suis pas en mesure de vous déconnecter.

Je suis journalisation dans G+ dans l'activité de Connexion et le stockage de la session de l'utilisation Partagée des Préférences, et la fermeture de la session dans une autre Base de l'activité, en passant la valeur booléenne de l'activité de Connexion concernant la clôture de la session. Si la Session n'est pas actif ou d'un utilisateur n'est pas connecté, l'activité de connexion se connecte automatiquement à G+ à chaque fois que l'activité de connexion est commencé. Essayé de faire de la logique sur onConnected mais en vain.

Ci-dessous mon code extrait.

public class LoginActivity extends BaseActionBar implements OnClickListener,
ConnectionCallbacks, OnConnectionFailedListener {
private Button btnLogin, btnFgetPwrd, btnRegister;
//Logcat tag
private static final String TAG = "LoginActivity";
//Google Plus
private static final int GOOGLE_SIGN_IN = 0;
//Google Plus Profile Data
String GpersonName, GpersonPhotoUrl, Gemail, googleError, GCustId;
//Google client to interact with Google API
private GoogleApiClient mGoogleApiClient;
private SignInButton btnGooglePlus;
//A flag indicating that a PendingIntent is in progress and prevents us
//from starting further intents.
private boolean mIntentInProgress;
//Track whether the sign-in button has been clicked so that we know to
//resolve all issues preventing sign-in without waiting.
private boolean mSignInClicked;
private ConnectionResult mConnectionResult;
//Session Manager Class
SessionManager session;
@Override
protected void onCreate(Bundle savedInstanceState) {
//TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.login);
//Initializing google plus api client
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this).addApi(Plus.API)
.addScope(Plus.SCOPE_PLUS_LOGIN).build();
//Session Manager
session = new SessionManager(getApplicationContext());
if (session.isLoggedIn() == false) {
Log.v(TAG, "false");
mSignInClicked = false;
DataStore.LoginGoogle = false;
if (mGoogleApiClient.isConnected()) {
Plus.AccountApi.clearDefaultAccount(mGoogleApiClient);
mGoogleApiClient.disconnect();
mGoogleApiClient.connect();
}
} else {
Intent i = new Intent(LoginActivity.this, UserProfileActivity.class);
startActivity(i);
}
btnLogin.setOnClickListener(this);
btnFgetPwrd.setOnClickListener(this);
btnRegister.setOnClickListener(this);
btnGooglePlus.setOnClickListener(this);
}
//Facebook and Google Plus
@Override
protected void onActivityResult(int requestCode, int responseCode,
Intent intent) {
if (requestCode == GOOGLE_SIGN_IN) {
if (responseCode != RESULT_OK) {
mSignInClicked = false;
}
mIntentInProgress = false;
if (!mGoogleApiClient.isConnecting()) {
mGoogleApiClient.connect();
}
} else if (requestCode == FB_SIGN_IN) {
Session.getActiveSession().onActivityResult(this, requestCode,
responseCode, intent);
}
}
//Google Plus
protected void onStart() {
super.onStart();
mGoogleApiClient.connect();
}
protected void onStop() {
super.onStop();
if (mGoogleApiClient.isConnected()) {
mGoogleApiClient.disconnect();
}
}
@Override
public void onClick(View v) {
//TODO Auto-generated method stub
switch (v.getId()) {
case R.id.loginBtn:
//Login Button Clicked
break;
case R.id.loginBtnFrgtPass:
//Forgot Button Clicked
i = new Intent(LoginActivity.this, ForgotPasswordActivity.class);
startActivity(i);
break;
case R.id.loginBtnRegis:
//Register Button Clicked
i = new Intent(LoginActivity.this, RegisterActivity.class);
startActivity(i);
break;
case R.id.loginBtn_sign_in:
signInWithGplus();
break;
}
}
//Sign-in into google
private void signInWithGplus() {
if (!mGoogleApiClient.isConnecting()) {
mSignInClicked = true;
resolveSignInError();
}
}
//Method to resolve any sign-in errors
private void resolveSignInError() {
Log.v(TAG, mConnectionResult.toString());
if (mConnectionResult.hasResolution()) {
try {
mIntentInProgress = true;
startIntentSenderForResult(mConnectionResult.getResolution()
.getIntentSender(), GOOGLE_SIGN_IN, null, 0, 0, 0);
//mConnectionResult
//.startResolutionForResult(this, GOOGLE_SIGN_IN);
} catch (SendIntentException e) {
mIntentInProgress = false;
mGoogleApiClient.connect();
}
}
}
//Google+ connection
@Override
public void onConnected(Bundle arg0) {
//TODO Auto-generated method stub
Log.v(TAG, "onConnected");
mSignInClicked = false;
Toast.makeText(this, "User is connected to Google+", Toast.LENGTH_LONG)
.show();
btnLogin.setEnabled(false);
//Get user's information
getProfileInformation();
}
//Google+ connection
@Override
public void onConnectionSuspended(int arg0) {
//TODO Auto-generated method stub
mGoogleApiClient.connect();
}
//Google+ connection
@Override
public void onConnectionFailed(ConnectionResult result) {
//TODO Auto-generated method stub
Log.v(TAG, result.toString());
if (!result.hasResolution()) {
GooglePlayServicesUtil.getErrorDialog(result.getErrorCode(), this,
0).show();
return;
}
if (!mIntentInProgress) {
//Store the ConnectionResult for later usage
mConnectionResult = result;
if (mSignInClicked) {
//The user has already clicked 'sign-in' so we attempt to
//resolve all
//errors until the user is signed in, or they cancel.
resolveSignInError();
}
}
} //Normal Logging in
}

Extrait de Code de la déconnexion de la session à partir de la base de l'activité

if (session.isLoggedIn()) {
session.logoutUser();
DataStore.LoginGoogle = false;
setOptionTitle(R.id.action_login, "Login");
}
InformationsquelleAutor Beenal | 2014-11-03