[英]logout GoogleApiClient from another activity
我想使用Google帳戶API構建應用。 我已經完成了使用Google教程的登錄,並且效果很好,但是我嘗試從其他活動中注銷帳戶,它也可以正常工作,但是當我評論“ onStart”就可以了,但是在類LoginActivity.java登錄帳戶中使用了方法“ onStart”,但是當我再次嘗試登錄時登錄登錄的帳戶。 為了將googleApiClient對象傳遞給另一個活動,我使用了單例。 你能幫助我嗎?
碼:
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();
}
我通過在HomeActivity中添加onStart來解決它:
@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();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.