Android: Как мне вызвать startResolutionForResult из службы?

Я пытаюсь добавить функцию отслеживания GPS в свое приложение, написав службу отслеживания GPS. Я слежу за материалами Android Developer о том, как это сделать с помощью сервисов Google Play, но я придерживаюсь метода onConnectionFailed. Я пытаюсь позвонить startResolutionForResult, чтобы позволить Google Play Services обрабатывать эту ошибку. Однако для этого метода требуется, чтобы действие передавалось как первый параметр, и поскольку я вызываю его из службы, я не совсем уверен, что мне следует делать.

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

Ответ 1

Процесс аутентификации для Служб Google Play требует активности, поскольку может потребоваться отобразить пользовательский интерфейс для пользователя. Поскольку у служб нет пользовательского интерфейса, вам необходимо отправить сообщение в действие для настройки соединения, после чего служба может продолжить работу. Существует хороший ответ, демонстрирующий один из способов сделать это здесь: Пример: связь между Activity и службой с использованием сообщений

Ответ 2

Вы можете использовать Status.getResolution() и запустить с ним действие. Например:

В сервисе

PendingIntent pI = status.getResolution();
mGoogleApiClient.getContext().startActivity(new Intent(mGoogleApiClient.getContext(), SomeActivity.class)
.putExtra("resolution", pI).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK));

В Activity onCreate:

PendingIntent pI = (PendingIntent) (getIntent().getParcelableExtra("resolution"));
startIntentSenderForResult(pI.getIntentSender(),1,null,0,0,0);

также добавить onActivityResult (int requestCode, int resultCode, Intent data), чтобы получить результат разрешения