Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Google+ sign out from a different activity

I have started using the Google+ API for android, and I have created a sign-in application following this tutorial:

https://developers.google.com/+/mobile/android/sign-in

Now, the problem is that I want to create the sign out button from a different Activity, and what i tried to do didn't really worked..

My GPlusLogin code (Activity for the Google+ Login):

import android.app.Activity; import android.app.ProgressDialog; import android.content.Intent; import android.content.IntentSender.SendIntentException; import android.os.Bundle; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import com.google.android.gms.common.*; import com.google.android.gms.common.GooglePlayServicesClient.ConnectionCallbacks; import com.google.android.gms.common.GooglePlayServicesClient.OnConnectionFailedListener; import com.google.android.gms.plus.PlusClient;  public class GPlusLogin extends Activity implements ConnectionCallbacks, OnConnectionFailedListener{      private static final int REQUEST_CODE_RESOLVE_ERR = 9000;     private static final String TAG = "GPlusLogin";      private ProgressDialog mConnectionProgressDialog;     private PlusClient mPlusClient;     private ConnectionResult mConnectionResult;      @Override     protected void onCreate(Bundle savedInstanceState) {         // TODO Auto-generated method stub         super.onCreate(savedInstanceState);         setContentView(R.layout.gplus_layout);         mPlusClient = new PlusClient.Builder(this, this, this).setVisibleActivities("http://schemas.google.com/AddActivity", "http://schemas.google.com/BuyActivity").build();         Bundle extras = getIntent().getExtras();         mConnectionProgressDialog = new ProgressDialog(this);         mConnectionProgressDialog.setMessage("Signing in...");          if(extras!=null){             if(extras.getString("signout")!=null){                 if (mPlusClient.isConnected()) {                     mPlusClient.clearDefaultAccount();                     mPlusClient.disconnect();                     mPlusClient.connect();                     finish();                     startActivity(getIntent());                 }             }         }else{              findViewById(R.id.sign_in_button).setOnClickListener(new OnClickListener() {                  public void onClick(View view) {                     // TODO Auto-generated method stub                     if (view.getId() == R.id.sign_in_button && !mPlusClient.isConnected()) {                         if (mConnectionResult == null) {                             mConnectionProgressDialog.show();                         } else {                             try {                                 mConnectionResult.startResolutionForResult(GPlusLogin.this, REQUEST_CODE_RESOLVE_ERR);                             } catch (SendIntentException e) {                                 // Try connecting again.                                 mConnectionResult = null;                                 mPlusClient.connect();                             }                         }                     }                 }             });         }     }      @Override     protected void onStart() {         // TODO Auto-generated method stub         super.onStart();         mPlusClient.connect();     }      @Override     protected void onStop() {         // TODO Auto-generated method stub         super.onStop();         mPlusClient.disconnect();     }      @Override     public void onConnectionFailed(ConnectionResult result) {         // TODO Auto-generated method stub         if (mConnectionProgressDialog.isShowing()) {             // The user clicked the sign-in button already. Start to resolve             // connection errors. Wait until onConnected() to dismiss the             // connection dialog.             if (result.hasResolution()) {                 try {                     result.startResolutionForResult(this, REQUEST_CODE_RESOLVE_ERR);                 } catch (SendIntentException e) {                     mPlusClient.connect();                 }             }         }          mConnectionResult = result;     }      @Override     protected void onActivityResult(int requestCode, int responseCode, Intent intent) {         if (requestCode == REQUEST_CODE_RESOLVE_ERR && responseCode == RESULT_OK) {             mConnectionResult = null;             mPlusClient.connect();         }     }      @Override     public void onConnected() {         // TODO Auto-generated method stub         mConnectionProgressDialog.dismiss();         Intent main = new Intent(GPlusLogin.this, MainActivity.class);         main.putExtra("result", true);         startActivity(main);     }      @Override     public void onDisconnected() {         // TODO Auto-generated method stub         Log.d(TAG, "disconnected");     }  } 

My Disconnect code on MainActivity:

import android.os.Bundle; import android.app.Activity; import android.content.Intent; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView;   public class MainActivity extends Activity{      @Override     protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.activity_main);         Bundle extras = getIntent().getExtras();         if(extras==null){             Intent intent = new Intent(this, GPlusLogin.class);             startActivity(intent);         }         TextView text1 = (TextView) findViewById(R.id.text1);         text1.setText("You Are Connected :D");          Button SignOut = (Button) findViewById(R.id.sign_out_gplus);         SignOut.setOnClickListener(new OnClickListener() {              @Override             public void onClick(View view) {                 // TODO Auto-generated method stub                 Intent intent = new Intent(MainActivity.this, GPlusLogin.class);                 intent.putExtra("signout", true);                 startActivity(intent);             }         });     }      @Override     public boolean onCreateOptionsMenu(Menu menu) {         // Inflate the menu; this adds items to the action bar if it is present.         getMenuInflater().inflate(R.menu.main, menu);         return true;     }   } 
like image 604
arielschon12 Avatar asked Mar 13 '13 17:03

arielschon12


People also ask

How can I log out my Google account from other devices?

Go to your Google Account. On the left navigation panel, select Security. On the Your devices panel, select Manage all devices. Sign out.


1 Answers

Just add this on your new activity, where you want your logout-button for google+ to be there :

@Override protected void onStart() {     GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)             .requestEmail()             .build();     mGoogleApiClient = new GoogleApiClient.Builder(this)             .addApi(Auth.GOOGLE_SIGN_IN_API, gso)             .build();     mGoogleApiClient.connect();     super.onStart(); } 

and next:

 signout.setOnClickListener(new View.OnClickListener() {       @Override       public void onClick(View v) {           Auth.GoogleSignInApi.signOut(mGoogleApiClient).setResultCallback(                   new ResultCallback<Status>() {                       @Override                       public void onResult(Status status) {                           // ...                           Toast.makeText(getApplicationContext(),"Logged Out",Toast.LENGTH_SHORT).show();                           Intent i=new Intent(getApplicationContext(),MainActivity.class);                           startActivity(i);                       }                   });       }   }); 
like image 200
sommesh Avatar answered Oct 14 '22 11:10

sommesh