Kamil Imiełowski
Kamil Imiełowski

Reputation: 194

logout GoogleApiClient from another activity

I want build app with google account API. I done login with google tutorial and it work good but i try to logout account from another activity and it works too but method "onStart" in class LoginActivity.java login account back when i comment "onStart" its ok but when i try login again it login for account which was logged. For pass googleApiClient object to another activity i used singleton. Can you help me?

Code:

public void onStart() {
        super.onStart();

        OptionalPendingResult<GoogleSignInResult> opr = Auth.GoogleSignInApi.silentSignIn(mGoogleApiClient);
        if (opr.isDone()) {
            Log.d(TAG, "Got cached sign-in");
            GoogleSignInResult result = opr.get();
            handleSignInResult(result);
        } else {
            showProgressDialog();
            opr.setResultCallback(new ResultCallback<GoogleSignInResult>() {
                @Override
                public void onResult(GoogleSignInResult googleSignInResult) {
                    hideProgressDialog();
                    handleSignInResult(googleSignInResult);
                }
            });
        }
    }

HomeActivity.java:

public class HomeActivity extends AppCompatActivity implements View.OnClickListener {
    private GoogleApiClient mGoogleApiClient;// = state.getmGoogleApiClient();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home);

        GlobalState state = ((GlobalState) getApplicationContext()); 
        mGoogleApiClient = state.getmGoogleApiClient();

        findViewById(R.id.sign_out_button).setOnClickListener(this);
    }

    private void signOut(){
        Auth.GoogleSignInApi.signOut(mGoogleApiClient).setResultCallback(
                new ResultCallback<Status>() {
                    @Override
                    public void onResult(Status status) {
                        GlobalState state = ((GlobalState) getApplicationContext()); 
                        state.setmGoogleApiClient(mGoogleApiClient);
                        Intent login = new Intent(getApplicationContext(), LoginActivity.class);
                        login.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                        startActivity(login);
                        finish();
                    }
                });
    }



    @Override
    public void onClick(View v) {
        switch(v.getId()){
            case R.id.sign_out_button:
                signOut();
                break;
        }
    }

Upvotes: 0

Views: 1507

Answers (2)

Kamil Imiełowski
Kamil Imiełowski

Reputation: 194

i resolve it by add onStart in HomeActivity:

@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();
}

Upvotes: 0

ND1010_
ND1010_

Reputation: 3841

change onStart() with

 @Override
protected void onStart() {
    super.onStart();
    mGoogleApiClient.connect();
}

Upvotes: 1

Related Questions