я получаю следующее сообщение об ошибке:IllegalStateException по знаку апи клиента Google
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.
Как с этим справиться?
кажется правдоподобной причины. Но вот инструкция для 'public void connect (int signInMode)'. В соответствии с документацией: ошибка заключается в том, чтобы сделать несколько вызовов этого метода, передавая разные режимы. После выбора режима все последующие вызовы соединения должны использовать один и тот же режим. Как изменился режим на 'SIGN_IN_MODE_NONE'. – suku
Я думаю, это потому, что вы вызываете 'public void connect()' перед 'public void connect (int)', поскольку 'SIGN_IN_MODE_NONE' не является параметром в качестве параметра. Посмотрите на это и выберите либо режим, либо режим. Я предполагаю, что другое сообщение SO, о котором вы говорите, [this] (http://stackoverflow.com/questions/36063607/google-signin-not-working). Я не уверен, что вы пытаетесь войти в систему, как он, но для моего входа я поместил это в свой 'onConnectionFailedListener':' result.startResolutionForResult (MainActivity.this, REQUEST_LOGIN); 'Это выскочил диалог входа в систему –
Да I имел в виду этот вопрос. У меня был 'result.startResolutionForResult', но он все еще получал эту ошибку. К сожалению, эта ошибка никогда не воспроизводилась в моем конце, но отчеты о сбоях, отправленные от клиентов, показали ее. Я попытался перерегистрировать обратные вызовы, а затем снова 'googleApiClient.connect (GoogleApiClient.SIGN_IN_MODE_OPTIONAL)'. Я еще не получил отчета о сбоях, но это ранние дни. Не удается подтвердить, как это предотвращает проблему. – suku