java - 从另一个 Activity 中注销 GoogleApiClient

标签 java android

我想使用 Google 帐户 API 构建应用程序。我使用谷歌教程登录,效果很好,但我尝试从另一个 Activity 注销帐户,它也有效,但是当我评论“onStart”时,类 LoginActivity.java 登录帐户中的方法“onStart”返回,但当我再次尝试登录时它登录已记录的帐户。为了将 googleApiClient 对象传递给另一个 Activity ,我使用了单例。你能帮我吗?

代码:

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;
        }
    }

最佳答案

将 onStart() 更改为

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

关于java - 从另一个 Activity 中注销 GoogleApiClient,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42831348/

相关文章:

java - android json解析器加载更多数据

javascript - 使用 Spring 的静态 Assets 缓存

java - RandomStringUtils.randomAlphanumeric(int count) 有多独特?

将部分记录信息保存到数据库的Android UI模式

java - 我应该使用什么设计模式?使用 Spring 框架

java - 从java问题连接到数据库

android - 如果在 Android 中不再可见,则 Activity 被系统杀死的问题

android - 无法解析 Fragment 中的 setDistributeEvenly()

Android:ImageView 禁用缩放

android - 可绘制图像数组