我收到以下错误:
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。
如何处理?
答案 0 :(得分:0)
您似乎不允许多次为connect(int)方法提供登录模式。 documentation表示"对此方法进行多次调用以传递不同模式是错误的。选择模式后,所有未来的连接呼叫都必须使用相同的模式。"因此,您可能会使用不同的参数调用connect()
。 SIGN_IN_MODE_NONE
似乎不是参数的选项,因此我认为您在一个案例中调用connect()
而在另一个案例中调用connect(int)
(SIGN_IN_MODE_OPTIONAL
})。检查一下,看看是否能使它们保持一致。
另外,我认为GoogleApiClient的回调是onConnected(Bundle)
和onConnectionFailed(ConnectionResult)