登录Google api客户端时出现IllegalStateException

时间:2016-07-22 01:52:32

标签: android google-api google-fit

我收到以下错误:

java.lang.IllegalStateException: Cannot use sign-in mode: SIGN_IN_MODE_OPTIONAL. Mode was already set to SIGN_IN_MODE_NONE 

这是什么意思?怎么预防呢?

其他类似SO问题的建议是

 mGoogleApiClient.connect(GoogleApiClient.SIGN_IN_MODE_OPTIONAL);

但我一直在使用它。

这是onActivityResult

 @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == REQUEST_OAUTH) {
        authInProgress = false;
        if (resultCode == RESULT_OK) {
            progressDialog.dismiss();
            if (!googleApiClient.isConnecting() && !googleApiClient.isConnected()) {
                googleApiClient.connect(GoogleApiClient.SIGN_IN_MODE_OPTIONAL);
            } else {
                onConnected(null);
            }
        } else if (resultCode == RESULT_CANCELED) {
            progressDialog.dismiss();
            startApiClientConnect();
        }
    } else {
        progressDialog.dismiss();
        startApiClientConnect();
    }
}

如果初始连接尝试失败,则会在googleApiClient.connect中重新尝试onActivityResult。我相信这是重新尝试导致问题。初始连接失败后/某些用户操作会生成SIGN_IN_MODE_NONE。

如何处理?

1 个答案:

答案 0 :(得分:0)

您似乎不允许多次为connect(int)方法提供登录模式。 documentation表示"对此方法进行多次调用以传递不同模式是错误的。选择模式后,所有未来的连接呼叫都必须使用相同的模式。"因此,您可能会使用不同的参数调用connect()SIGN_IN_MODE_NONE似乎不是参数的选项,因此我认为您在一个案例中调用connect()而在另一个案例中调用connect(int)SIGN_IN_MODE_OPTIONAL })。检查一下,看看是否能使它们保持一致。

另外,我认为GoogleApiClient的回调是onConnected(Bundle)onConnectionFailed(ConnectionResult)