Aktivieren Sie die Standortdienste, ohne zur Einstellungsseite zu navigieren
Gegen den traditionellen Ansatz, dass Benutzer gehen Sie auf die Seite Einstellungen und aktivieren Sie Ortungsdienste und kommen wieder zurück, ich habe bemerkt, eine einfachere Weise, das gleiche zu tun in einige der neuesten apps.
Bezugnehmend auf folgenden screenshot zu sehen, werden Sie aufgefordert, ein Dialogfeld, um Benutzer zu ermöglichen, die standortbasierte Dienste mit nur einem Klick und es funktioniert in diesen apps.
Wie kann ich erreichen das gleiche?
InformationsquelleAutor der Frage GAMA | 2015-10-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dieser dialog wird erstellt, indem LocationSettingsRequest.Generator verfügbar in der Google-Play-Dienste.
Müssen Sie eine dependency zur app
build.gradle
:Dann können Sie dieses minimal-Beispiel:
Finden Sie das komplette Beispiel hier.
InformationsquelleAutor der Antwort Mattia Maestrini
Befolgen Sie die unten genannten Schritte
1) Erstellen Sie eine
LocationRequest
nach Ihren wünschen2) Erstellen Sie eine
LocationSettingsRequest.Builder
3) Bekommen
LocationSettingsResponse
Task
mit dem folgenden codeHinweis:
LocationServices.SettingsApi
ist so veraltet, verwenden SieSettingsClient
Statt.4) Hinzufügen
OnCompleteListener
um das Ergebnis aus der Aufgabe.Wenn dieTask
abgeschlossen ist, kann der client überprüfen Sie die Position-Einstellungen, indem Sie auf den status-code aus derLocationSettingsResponse
Objekt.FALL 1:
LocationSettingsStatusCodes.RESOLUTION_REQUIRED
: Lage ist nicht aktiviert, aber wir können den Benutzer auffordern, den Speicherort aktivieren, indem Sie aufgefordert werden, ihm zu drehen auf der Stelle durch den dialog (durch AufrufstartResolutionForResult
).FALL 2:
LocationSettingsStatusCodes.SETTINGS_CHANGE_UNAVAILABLE
: Standort-Einstellungen nicht zufrieden sind. Jedoch haben wir keine Möglichkeit, um die Einstellungen zu korrigieren, damit wir nicht zeigen Sie das Dialogfeld.5)
OnActivityResult
können wir die Aktion des Benutzers in den Standort-Einstellungen-dialog.RESULT_OK
=> Benutzer aktiviert die Lage.RESULT_CANCELLED
- Benutzer abgelehnt, die Einstellung Speicherort auf Anfrage.InformationsquelleAutor der Antwort RevanthKrishnaKumar V.
Android Marshmallow-6 unterstützt die runtime-Berechtigung. Berechtigungen für die Laufzeit nur Arbeit auf Marshmallow und auf pre-Marshmallow-es funktioniert immer noch der alte Weg.
Können Sie mehr dazu erfahren Sie in diesem offiziellen Android-Entwickler-Video:
https://www.youtube.com/watch?v=C8lUdPVSzDk
Und die Berechtigung anfordern: http://developer.android.com/training/permissions/requesting.html
InformationsquelleAutor der Antwort Sharj
Seine Arbeiten Ähnlich wie google maps
Hinzufügen Abhängigkeit im build.gradle-Datei
dieser oder jener
InformationsquelleAutor der Antwort Keshav Gera
Danke Mattia Maestrini für die Antwort, ich möchte hinzufügen, dass die Verwendung
compile 'com.google.android.gms:play-services-location:8.1.0'
ausreichen würde. Dies verhindert, dass Ihre app einschließlich unnötigen Bibliotheken und hilft für die Aufbewahrung Ihrer Methode count niedrig.
InformationsquelleAutor der Antwort Vuong Pham
Dank Mattia Maestrini +1
Xamarin Lösung:
InformationsquelleAutor der Antwort Pierre
Mit den letzten Marshmallow-update, auch wenn sich der Speicherort-Einstellung eingeschaltet ist, wird die app erfordert explizit um Erlaubnis Fragen. Der empfohlene Weg, dies zu tun ist, um anzeigen im Abschnitt zu den Berechtigungen der app, wobei der Benutzer kann die Sichtbarkeit der Genehmigung wie erforderlich. Das code-snippet für das tun dies ist, wie unten:
Ab und setzen die
onRequestPermissionsResult
Methode wie folgt:Einem anderen Ansatz können Sie auch die SettingsApi zu erfragen, welche location-Anbieter(s) aktiviert sind. Wenn keines aktiviert ist, können Sie aufgefordert, ein Dialogfeld zum ändern der Einstellung innerhalb der app.
InformationsquelleAutor der Antwort Mahendra Liya