Android Google: 在另一个活动中注销Google

3

我使用了com.google.android.gms.common.SignInButton来创建A中的Google应用程序登录。然后,我创建了另一个活动B,使用自定义的Android按钮来注销连接到Google的账户。但是当我从活动B调用A活动中的静态方法logout时,无法注销连接到Google的账户。有没有人对我的问题有任何想法?

private GoogleApiClient mGoogleApiClient;
    private boolean mIntentInProgress;
    private boolean mSignInClicked;
    private ConnectionResult mConnectionResult; 

在A活动中。 通过调用方法为B活动中的退出按钮设置OnclickListioner。
public static void signOutFromGplus() {
        if (mGoogleApiClient.isConnected()) {
            Plus.AccountApi.clearDefaultAccount(mGoogleApiClient);
            mGoogleApiClient.disconnect();
            Toast.makeText(this, getString(R.string.logout_status) , Toast.LENGTH_LONG).show();
            MyLog.info(getString(R.string.logout_status));
        }
    }

但我遇到了日志错误:Google API客户端必须连接。请帮助我……抱歉,我的英语不好。

1个回答

0
你需要使用GoogleApiClient创建一个单例模式。然后你可以从另一个活动(在这种情况下是B)中调用这个对象。
GoogleApiClient googleApiClient;

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

GoogleApiClientHelper googleApiClientHelper = GoogleApiClientHelper.getInstance(getApplicationContext());
googleApiClient = googleApiClientHelper.getGoogleApiClient();
}

然后,您可以注销

    private void doLogOut() {
    if ( googleApiClient.isConnected() ) {
        Plus.AccountApi.clearDefaultAccount(googleApiClient);
        googleApiClient.disconnect();
        googleApiClient.connect();

        Intent loginActivity = new Intent(this, LoginActivity.class);
        startActivity(loginActivity);
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接