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; } }
Go to your Google Account. On the left navigation panel, select Security. On the Your devices panel, select Manage all devices. Sign out.
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); } }); } });
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With