.useDefaultAccount() для GoogleApiClient не работает должным образом

#android #google-api #google-play-services #google-api-java-client

#Android #google-api #google-play-сервисы #google-api-java-client

Вопрос:

Я пытаюсь инициализировать API истории из сервисов Google Play. Теперь, с тех пор как мы обновили наше приложение, .useDefaultAccount() метод не работает должным образом, и результат подключения завершается ошибкой. Это приведет к появлению запроса на вход в наше приложение, где пользователю необходимо выбрать свою учетную запись. Мы хотели бы предотвратить это. Есть ли способ сделать это?

Как мы создаем объект клиента и подключаем его (внутри AsyncTask ):

 GoogleApiClient apiClient = new GoogleApiClient.Builder(context)
                    .addApi(Fitness.HISTORY_API)
                    .useDefaultAccount()
                    .build();
            ConnectionResult connectionResult = apiClient.blockingConnect();

            if (!connectionResult.isSuccess()) {
                if (connectionResult.hasResolution() amp;amp; context instanceof Activity) {
                    try {
                        connectionResult.startResolutionForResult((Activity) context, 1);
                    } catch (IntentSender.SendIntentException e) {
                        // Utter Failure
                    }
                }
            }
            return null;
  

Ответ №1:

Клиент API Google должен быть построен на onCreate методе Activity, а не внутри AsyncTask. Попробуйте переместить блок кода в соответствующий класс. Это может быть причиной того, почему вы получаете SendIntentException .

Ответ №2:

Убедитесь, что вы правильно обрабатываете результат выбора учетной записи в onActivityResult(). Если вы не подключились к GoogleApiClient там, диалоговое окно будет продолжать отображаться.