我正在尝试为我的应用实施Google登录和注销。注销似乎给出了以下错误; java.lang.RuntimeException:无法启动活动ComponentInfo:java.lang.IllegalStateException:GoogleApiClient尚未连接。
LogoutActivity:
public class LogoutActivity_new extends AppCompatActivity implements
GoogleApiClient.OnConnectionFailedListener{
private GoogleApiClient mGoogleApiClient;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// SocialLogin.signOut();
// GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN);
mGoogleApiClient = new GoogleApiClient.Builder(this)
.enableAutoManage(this /* FragmentActivity */, this /* OnConnectionFailedListener */)
.addApi(Auth.GOOGLE_SIGN_IN_API)
.build();
signOut();
}
private void signOut() {
Auth.GoogleSignInApi.signOut(mGoogleApiClient).setResultCallback(
new ResultCallback<Status>() {
@Override
public void onResult(Status status) {
// [START_EXCLUDE]
//updateUI(false);
// [END_EXCLUDE]
}
});
}
@Override
public void onConnectionFailed(ConnectionResult connectionResult) {
}
}
请帮助人
答案 0 :(得分:0)
您可能需要首先在mGoogleApiClient上调用connect
方法并等到它连接后才能调用signOut
。这样做的好地方是onResume
方法
答案 1 :(得分:0)
您无法在创建mGoogleApiClient后调用signout(),因为您不知道客户端是否已经连接(这几乎是不可能的,因为代码执行速度很快)。
当您知道客户端已将自身连接到googleApi时,您可以使用此方法,例如,当调用onConnected()时,
示例:
@Override
void OnConnected(Bundle bundle)
{
signout();
}
当客户端连接自己时,googleApi会调用OnConnected()。
您还可以设置一些布尔字段,例如&#39; connected&#39;在OnConnected方法中为true,然后您可以在代码中的其他位置检查它以调用signout(),如:
if(connected) signout();