2014-05-14 6 views
8

Pracuję nad Service, która otrzymuje lokalizację i korzystam z Usług Google Play.Jak poprawnie wywołać startIntentSenderForResult w serwisie?

Zgodnie z http://developer.android.com/reference/com/google/android/gms/common/ConnectionResult.html#hasResolution%28%29, jeśli hasResolution() zwraca true, wywołanie startResolutionForResult może rozwiązać błąd. Ale jako pierwszy parametr potrzebny jest Activity.

Oczywiście ConnectionResult zwraca PendingIntent przez getResolution() ale Service nie posiada startIntentSenderForResult() jak Activity.
O ile mi wiadomo, nie ma sposobu, aby uzyskać wynik z powrotem w Service.

Jak mogę uzyskać wynik w Service? Czy jest jeszcze inny właściwy sposób?

Edit:

usługi Google Play SDK zapewnia GooglePlayServicesUtil.showErrorNotification dla zadań w tle. Oczywiście zaakceptowana odpowiedź jest dobrym rozwiązaniem.

Edit 2:

showErrorNotification jest tylko dla wartości zwracanej isGooglePlayServicesAvailable.

Odpowiedz

2

chciałbym postępować w ten sposób:

  1. pokazać powiadomienie wskazuje, że istnieje problem robi zadanie X (faktycznie, interakcji z Google Play, ale można powiedzieć coś innego bardziej specyficzne dla danego aplikacja).

  2. Dla tego powiadomienia podaj PendingIntent, który rozpoczyna Twoją aktywność. Jako część dodatków dla tego PendingIntent, przekazuje PendingIntent dostarczony przez ConnectionResult.getResolution(). PendingIntents są parcelable, więc nie powinno to stanowić problemu.

  3. W onCreate() dla tej działalności, należy uzyskać oryginalnyPendingIntent z dodatkami, a następnie zadzwonić startIntentSenderForResult() z nim. Spowoduje to automatyczne przekierowanie użytkownika do miejsca, w którym usługi Google Play potrzebowały go (ewentualnie zalogować się). rozwiązany (lub nie). Przejściowa aktywność będzie niewidoczna dla użytkownika.

Przyznaję, że to rozwiązanie jest teoretyczne, ale powinno działać.

+0

Sprawdzę to wkrótce. – khris

+0

Pracuję nad innym problemem, więc go nie sprawdziłem. Ale myślę, że to dobre rozwiązanie. Dzięki! – khris