Запуск действия после подключения клиента Google api

#android #google-api #lifecycle #onactivityresult

#Android #google-api #жизненный цикл #onactivityresult

Вопрос:

У меня есть фрагмент, из которого пользователь нажимает на кнопку (из G API) и входит в систему с учетной записью в своих сервисах Google, пока все хорошо…

Проблема в том, что при нажатии кнопки оно должно запускать действие после завершения процесса входа в систему, НО это происходит только (предположительно) при уничтожении действия (может быть остановлено, я действительно не знаю) и возобновлении его снова, потому что, если я захожу в меню и снова захожу в приложение, сразу начинается второе действие (или при смене ориентации, которая уничтожает и воссоздает действие).

Я знаю, что это как-то связано с методом жизненного цикла onActivityResult, потому что в моем приложении также есть facebook login, и я использовал uiHelper из facebook API, я просто не нашел его для Google api client (я не думаю, что он существует на самом деле).

Редактировать:

это результат моей активности, если я удалю «uiHelper.onActivityResult (…)», то то же самое произойдет с моим логином facebook.

 @Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    uiHelper.onActivityResult(requestCode, resultCode, data);
}
  

это вызывается при входе пользователя в систему

 @Override
public void onConnected(Bundle bundle) {
    mSignInClicked = false;
    // Get user's information
    getProfileInformation();
}
  

и это getProfileInformation, которая заполняет объект, который я использую для своего приложения (это простое приложение для напоминаний)

 private void getProfileInformation(){
try {
        if (Plus.PeopleApi.getCurrentPerson(mGoogleApiClient) != null) {
            RemindersUser.IS_FB_USER =false;
            Person currentPerson = Plus.PeopleApi.getCurrentPerson(mGoogleApiClient);
            String personName = currentPerson.getDisplayName();
            String personPhotoUrl = currentPerson.getImage().getUrl();
            personPhotoUrl = personPhotoUrl.substring(0,personPhotoUrl.length() - 2)  PROFILE_PIC_SIZE;
            String personGooglePlusId = currentPerson.getId();
            String email = Plus.AccountApi.getAccountName(mGoogleApiClient);
            mRemindersUser =new RemindersUser(
                    personName,
                    email,
                    personPhotoUrl,
                    personGooglePlusId);
            Intent viewPagerIntent = new Intent(getActivity().getApplicationContext(), ViewPagerActivity.class);
            viewPagerIntent.putExtra(RemindersUser.USERNAME, mRemindersUser.getName());
            viewPagerIntent.putExtra(RemindersUser.MAIL, mRemindersUser.getMail());
            viewPagerIntent.putExtra(RemindersUser.IMAGE, mRemindersUser.getImage());
            viewPagerIntent.putExtra(RemindersUser.USER_ID, mRemindersUser.getUserId());
            startActivity(viewPagerIntent);
        } else {
            Toast.makeText(getActivity(),"Person information is null", Toast.LENGTH_LONG).show();
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
  

Комментарии:

1. Готово, я почти полностью выполнил свое приложение фрагментами, вот почему все вызовы getActivity.

Ответ №1:

Решаемая:

Я неправильно управлял жизненным циклом подключений Google , делая это на один уровень абстракции ниже, чем следовало, я начал управлять подключением из действия, а не из фрагмента, и все работало как надо.