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), чтобы получить результат разрешения