При подключении к Google Диску с помощью GDAA экран тускнеет на секунду - PullRequest
0 голосов
/ 29 ноября 2018

Как видно из названия, это единственная проблема, возникающая при подключении к Google Диску.Он успешно подключается и создает файлы, но получение темного экрана при каждом запросе не очень выгодно.Я протестировал его на нескольких реальных устройствах и получил тот же результат.Можно ли решить эту проблему?Любое предложение приветствуется.Вот мой код:

mGoogleSignInClient = buildGoogleSignInClient();
startActivityForResult(mGoogleSignInClient.getSignInIntent(), REQUEST_CODE_SIGN_IN);

Сборка клиента входа в Google Drive:

  private GoogleSignInClient buildGoogleSignInClient () {
    Log.i(TAG, "signIn build");
    GoogleSignInOptions signInOptions =
            new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                    .requestScopes(Drive.SCOPE_FILE)
                    .build();
    return GoogleSignIn.getClient(this, signInOptions);
}

onActivityResult:

 @Override
protected void onActivityResult(final int requestCode, final int resultCode, final Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    switch (requestCode) {
        case COMPLETE_AUTHORIZATION_REQUEST_CODE:
            // Called after user is signed in.
            if (resultCode == RESULT_OK) {
                Log.i(TAG, "Signed in successfully.");
                mDriveClient = Drive.getDriveClient(this, GoogleSignIn.getLastSignedInAccount(this));
                mDriveResourceClient = Drive.getDriveResourceClient(this, GoogleSignIn.getLastSignedInAccount(this));

                createDriveFile();
            }
            break;
    }
}

1 Ответ

0 голосов
/ 12 декабря 2018

После долгих поисков я пришел к такому решению:

public Task<GoogleSignInAccount> silentSignIn ()

При использовании этого метода пользователь войдет в систему без вывода сообщений и, таким образом, экран останется неизменным.Вот полный код функционирования:

Task<GoogleSignInAccount> task = googleSignInClient.silentSignIn();
if (task.isSuccessful()) {
        GoogleSignInAccount signInAccount = task.getResult();
        Log.i(TAG, "immediate result available (silentSignIn)");
        updateViewWithGoogleSignIn(signInAccount);
    } else {
        // There's no immediate result ready, displays some progress indicator and waits for the
        // async callback.
        task.addOnCompleteListener(new OnCompleteListener<GoogleSignInAccount>() {
            @Override
            public void onComplete(@NonNull Task<GoogleSignInAccount> task) {
                try {
                    GoogleSignInAccount signInAccount = task.getResult(ApiException.class);
                    updateViewWithGoogleSignIn(signInAccount);
                } catch (ApiException apiException) {
                    // You can get from apiException.getStatusCode() the detailed error code
                    // e.g. GoogleSignInStatusCodes.SIGN_IN_REQUIRED means user needs to take
                    // explicit action to finish sign-in;
                    // Please refer to GoogleSignInStatusCodes Javadoc for details
                    updateButtonsAndStatusFromErrorCode(apiException.getStatusCode());
                }
            }
        });
    }

Получите доступ к содержимому диска и выполните необходимые задачи:

private void updateViewWithGoogleSignIn(GoogleSignInAccount signInAccount) {
    // Build a drive client.
    mDriveClient = Drive.getDriveClient(getApplicationContext(), signInAccount);
    // Build a drive resource client.
    mDriveResourceClient = Drive.getDriveResourceClient(getApplicationContext(), signInAccount);

    // TODO:
}

Для получения дополнительной информации о входе в систему без вывода сообщений: Документация

...