Затемнение экрана при авторизации Google Sign-In

346
24 апреля 2017, 02:41

Здравствуйте.

Есть приложение, в котором интегрирована система 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. В моем же случае, как я уже писал ранее, при последующих запусках после авторизации у пользователя на несколько секунд темнеет экран и при нажатии на него выпадает ошибка.

Надеюсь, не сильно перегрузил пост информацией, но я не знаю, как лучше было объяснить суть проблемы. Заранее благодарю за ответ.

READ ALSO
Получение выбранного элемента JList (Java)

Получение выбранного элемента JList (Java)

Есть вот такая панель JList :

340
ошибка 403 Forbidden после запроса delete google

ошибка 403 Forbidden после запроса delete google

Как исправить не подскажите?

284
Не передается объект по SocketChannel

Не передается объект по SocketChannel

Программа зависает на swriteObject(m), и я никак не могу понять почему

298
DBUtils Column &#39;id&#39; not found Java JDBC

DBUtils Column 'id' not found Java JDBC

Использую DBUtils для работы с базойИмею такой запрос:

271