Ich arbeite an einem Service
, das einen Standort erhält und die Google Play-Dienste dafür verwendet.
Nach Ссылка , wenn hasResolution()
gibt true
zurück und ruft startResolutionForResult
auf, um einen Fehler zu beheben. Aber es benötigt einen Activity
als ersten Parameter.
Natürlich ConnectionResult
gibt PendingIntent
by zurück getResolution()
, aber die Service
hat kein startIntentSenderForResult()
wie ein Activity
.
Soweit ich weiß, gibt es keine Möglichkeit, ein Ergebnis zurück in Service
zu bekommen.
Wie kann ich ein Ergebnis in Service
erhalten? Oder gibt es einen anderen richtigen Weg?
Bearbeiten:
Bearbeiten 2:
showErrorNotification
ist nur für einen Rückgabewert von isGooglePlayServicesAvailable
.
Ich würde so vorgehen:
Zeigt eine Benachrichtigung an, die darauf hinweist, dass bei Aufgabe X ein Problem aufgetreten ist (Interaktion mit Google Play Services, aber Sie können etwas anderes sagen spezifischer für Ihre App).
Geben Sie für diese Benachrichtigung einen PendingIntent
ein, der Ihre Aktivität startet. Als Teil der Extras für diesen PendingIntent übergibt den von ConnectionResult.getResolution()
bereitgestellten PendingIntent. PendingIntents sind parzellierbar, daher sollte dies kein Problem darstellen.
Erhalte in onCreate()
für diese Aktivität das Original PendingIntent
von den Extras und rufe dann startIntentSenderForResult()
damit auf. Dadurch wird der Nutzer automatisch dorthin weitergeleitet, wo er von Google Play Services benötigt wird (möglicherweise anmelden?)
Beenden Sie dann in onActivityResult()
die Aktivität, nachdem Sie Ihren Dienst (über eine Absicht) benachrichtigt haben, dass das Problem gelöst wurde (oder nicht). Die vorübergehende Aktivität ist für den Benutzer unsichtbar gewesen.
Ich gebe zu, diese Lösung ist theoretisch, aber es sollte funktionieren.
Tags und Links android android-service google-play-services