Я использую AccountManager.getAuthToken из моего сервиса для доступа к Googledocs и Spreadsheet API.
Поскольку я делаю это из фона и не хочу прерывать пользователя, я разрешаю accountManager генерировать уведомление, когда необходимо взаимодействие с пользователем (используя параметр boolean notifyAuthFailure).
Как я и ожидал, CallBack вызывается с помощью AccounManagerFuture, которая в этом случае преобразуется в Bundle с полем KEY_INTENT.
"В этом случае вам, возможно, придется подождать
пока пользователь не ответит, что может
занять часы или дни или навсегда. когда
пользователь отвечает и предоставляет новый
пароль, менеджер аккаунта
транслировать
LOGIN_ACCOUNTS_CHANGED_ACTION Intent,
какие приложения можно использовать, чтобы попробовать
снова "
Хорошо работает, когда дело касается только неправильного пароля. Но я столкнулся с проблемой, что AccountAuthenticator запрашивает разрешение во время выполнения, и намерение (из панели уведомлений) запускает GrantCredentialsPermissionActivity, которое после нажатия пользователем кнопки (Allow или Deny) не позволяет мне узнать, что пользователь уже ответил.
Вопрос в том, как узнать, когда закончилось взаимодействие с пользователем, и попытаться снова получить AuthToken.
Я не могу получить onActivityResult из GrantCredentialsPermissionActivity, потому что я запускаю его из NotificationBar (а не из других моих действий, поскольку я использую службу при попытке получить токен)
Я не могу указать разрешения в манифесте заранее, потому что, насколько я понимаю, это некоторые обычные разрешения, которые определены Google authenticator.
Похоже, что он не передает никаких намерений, когда пользователь утверждает / отклоняет запрошенное разрешение для приложения во время выполнения после закрытия GrantCredentialsPermissionActivity.
Спасибо.