Здравствуйте.
Есть приложение, в котором интегрирована система Google Sign-In. Делал все по этому гайду от самого Google. В плане функционала работает все нормально, но есть довольно раздражающий момент: если пользователь уже логинился до этого, то на пару секунд, после вызова функции логина, появляется затемнение экрана (как при выдаче Alert'ов в системе), а потом пропадает, не выдавая при этом никаких сообщений. Но основная суть в том, что, если нажать в этом момент на экран, то система посчитает, будто я отклонил диалог выбора пользователя и вернет в методе isSuccess() для GoogleSignInResult result false.
Т.к. перед вызовом этого метода у меня еще идет проверка `Permissions', то выглядит это так:
public void onPermissionsGranted() {
gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestEmail()
.requestProfile()
.build();
mGoogleApiClient = new GoogleApiClient.Builder(this)
.enableAutoManage(this, this)
.addApi(Auth.GOOGLE_SIGN_IN_API, gso)
.build();
OptionalPendingResult<GoogleSignInResult> opr = Auth.GoogleSignInApi.silentSignIn(mGoogleApiClient);
if (opr.isDone()) {
GoogleSignInResult result = opr.get();
handleSignInResult(result);
} else {
signIn();
}
}
private void handleSignInResult(GoogleSignInResult result) {
if (result.isSuccess()) {
GoogleSignInAccount acct = result.getSignInAccount();
Util.Account.setGoogleAccount(acct);
startNextActivity();
} else {
Toast.makeText(SplashActivity.this, "Ошибка подключения", Toast.LENGTH_SHORT).show();
finish();
}
}
private void signIn(){
Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
startActivityForResult(signInIntent, SIGN_IN_REQUEST);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == SIGN_IN_REQUEST) {
GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
handleSignInResult(result);
}
}
@Override
public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
Toast.makeText(SplashActivity.this, "Ошибка подключения", Toast.LENGTH_SHORT).show();
finish();
}
Проще говоря, при старте Activity идет проверка Permissions и, в случае успеха, начинается авторизация Google Sign-In. В идеальном случае, когда уже были приняты все Permissions и проведен вход в аккаунт Google, пользователь ничего уже не должен видеть, кроме самой Activity. В моем же случае, как я уже писал ранее, при последующих запусках после авторизации у пользователя на несколько секунд темнеет экран и при нажатии на него выпадает ошибка.
Надеюсь, не сильно перегрузил пост информацией, но я не знаю, как лучше было объяснить суть проблемы. Заранее благодарю за ответ.
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости